Skip to content

Instantly share code, notes, and snippets.

@MarcusDunn
Last active November 3, 2022 22:50
Show Gist options
  • Save MarcusDunn/e937d9c78d85ca80a23bb5250439aa36 to your computer and use it in GitHub Desktop.
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.
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