Last active
November 3, 2022 22:50
-
-
Save MarcusDunn/e937d9c78d85ca80a23bb5250439aa36 to your computer and use it in GitHub Desktop.
A java file containing two comparable programs using a list and a map.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
record Data(String type, float amount, int quantity) { | |
} | |
record Datav2(float amount, int quantity) { | |
} | |
class ListyMain { | |
public static void main(String[] args) { | |
Random rand = new Random(0); | |
var list = new ArrayList<Data>(Util.ELEMENT_COUNT); | |
for (int i = 0; i < Util.ELEMENT_COUNT; i++) { | |
list.add(Util.genData(rand)); | |
} | |
// 302735752 | |
System.out.println(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()); | |
// print to avoid optimizing out the list. | |
System.out.println(list); | |
} | |
} | |
class MapyMain { | |
public static void main(String[] args) { | |
Random rand = new Random(0); | |
var map = new HashMap<String, Datav2>(); | |
for (int i = 0; i < Util.ELEMENT_COUNT; i++) { | |
map.compute(Util.genType(rand), (k, v) -> { | |
if (v == null) { | |
v = new Datav2(0.0f, 0); | |
} | |
return new Datav2(v.amount() + Util.getAmount(rand), v.quantity() + Util.getQuantity(rand)); | |
}); | |
} | |
// 18103344 | |
System.out.println(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()); | |
// print to avoid optimizing out the list. | |
System.out.println(map); | |
} | |
} | |
class Util { | |
final static int ELEMENT_COUNT = 10_000_000; | |
final static List<String> types = List.of("A", "B", "C"); | |
static Data genData(Random rand) { | |
return new Data(genType(rand), getAmount(rand), getQuantity(rand)); | |
} | |
static int getQuantity(Random rand) { | |
return rand.nextInt(10); | |
} | |
static float getAmount(Random rand) { | |
return rand.nextFloat() * (10); | |
} | |
static String genType(Random rand) { | |
return types.get(rand.nextInt(types.size())); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment