Skip to content

Commit afc95e4

Browse files
chore(benchmarks): update SyncMap -> BucketSyncMap in the benchmarks
1 parent 080230f commit afc95e4

File tree

4 files changed

+136
-136
lines changed

4 files changed

+136
-136
lines changed

collections-fastutil/benchmarks.md

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
11
# Benchmarks
22

3-
## Int2ObjectSyncMap
3+
## Int2ObjectBucketSyncMap
44

5-
The following benchmarks are a comparison of `Int2ObjectSyncMap` vs `Int2ObjectMaps#synchronize()`.
5+
The following benchmarks are a comparison of `Int2ObjectBucketSyncMap` vs `Int2ObjectMaps#synchronize()`.
66

77
### Summary
88

9-
The `Int2ObjectSyncMap` has similar performance characteristics of the `Int2ObjectMaps#synchronize()`,
9+
The `Int2ObjectBucketSyncMap` has similar performance characteristics of the `Int2ObjectMaps#synchronize()`,
1010
with an advantage in write speed.
1111

1212
The following results were recorded on an _M4 Macbook Pro_, using 8 threads and
1313
100,000 entries for each benchmark:
1414

15-
- `Int2ObjectSyncMap` **get()** speed is...
16-
- 6369.2% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
17-
- 4702.9% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
18-
- 7676.2% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
15+
- `Int2ObjectBucketSyncMap` **get()** speed is...
16+
- 50x faster than `Int2ObjectMaps#synchronize()` for an empty map.
17+
- 50x faster than `Int2ObjectMaps#synchronize()` for a presized empty map.
18+
- 75x faster than `Int2ObjectMaps#synchronize()` for a full map.
1919

20-
- `Int2ObjectSyncMap` **put()** speed is...
21-
- 1168.2% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
22-
- 1252.2% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
23-
- 2380.9% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
20+
- `Int2ObjectBucketSyncMap` **put()** speed is...
21+
- 15x faster than `Int2ObjectMaps#synchronize()` for an empty map.
22+
- 15x faster than `Int2ObjectMaps#synchronize()` for a presized empty map.
23+
- 25x faster than `Int2ObjectMaps#synchronize()` for a full map.
2424

25-
- `Int2ObjectSyncMap` **put()** then **get()** speed is...
26-
- 3741.2% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
27-
- 3644.4% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
28-
- 2985.7% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
25+
- `Int2ObjectBucketSyncMap` **put()** then **get()** speed is...
26+
- 35x faster than `Int2ObjectMaps#synchronize()` for an empty map.
27+
- 40x faster than `Int2ObjectMaps#synchronize()` for a presized empty map.
28+
- 35x faster than `Int2ObjectMaps#synchronize()` for a full map.
2929

3030
### Results
3131

3232
```txt
33-
Benchmark (implementation) (mode) (prime) (readPercentage) (size) Mode Cnt Score Error Units
34-
Int2ObjectSyncMapBenchmark.get_only SyncMap none false 50 100000 thrpt 5 1.681 ± 0.001 ops/ns
35-
Int2ObjectSyncMapBenchmark.get_only SyncMap none true 50 100000 thrpt 5 1.682 ± 0.001 ops/ns
36-
Int2ObjectSyncMapBenchmark.get_only SyncMap presize false 50 100000 thrpt 5 1.681 ± 0.001 ops/ns
37-
Int2ObjectSyncMapBenchmark.get_only SyncMap presize true 50 100000 thrpt 5 1.681 ± 0.002 ops/ns
38-
Int2ObjectSyncMapBenchmark.get_only SyncMap prepopulate false 50 100000 thrpt 5 1.640 ± 0.013 ops/ns
39-
Int2ObjectSyncMapBenchmark.get_only SyncMap prepopulate true 50 100000 thrpt 5 1.633 ± 0.010 ops/ns
33+
Benchmark (implementation) (mode) (prime) (readPercentage) (size) Mode Cnt Score Error Units
34+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap none false 50 100000 thrpt 5 1.680 ± 0.001 ops/ns
35+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap none true 50 100000 thrpt 5 1.680 ± 0.001 ops/ns
36+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap presize false 50 100000 thrpt 5 1.681 ± 0.001 ops/ns
37+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap presize true 50 100000 thrpt 5 1.681 ± 0.001 ops/ns
38+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap prepopulate false 50 100000 thrpt 5 1.637 ± 0.005 ops/ns
39+
Int2ObjectBucketSyncMapBenchmark.get_only BucketSyncMap prepopulate true 50 100000 thrpt 5 1.634 ± 0.002 ops/ns
4040
41-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap none false 50 100000 thrpt 5 0.042 ± 0.080 ops/ns
42-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap none true 50 100000 thrpt 5 0.026 ± 0.002 ops/ns
43-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap presize false 50 100000 thrpt 5 0.026 ± 0.006 ops/ns
44-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap presize true 50 100000 thrpt 5 0.035 ± 0.055 ops/ns
45-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.022 ± 0.004 ops/ns
46-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.021 ± 0.010 ops/ns
41+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap none false 50 100000 thrpt 5 0.041 ± 0.074 ops/ns
42+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap none true 50 100000 thrpt 5 0.039 ± 0.068 ops/ns
43+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap presize false 50 100000 thrpt 5 0.038 ± 0.077 ops/ns
44+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap presize true 50 100000 thrpt 5 0.038 ± 0.075 ops/ns
45+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.023 ± 0.035 ops/ns
46+
Int2ObjectBucketSyncMapBenchmark.get_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.021 ± 0.016 ops/ns
4747
48-
Int2ObjectSyncMapBenchmark.get_put SyncMap none false 50 100000 thrpt 5 0.653 ± 0.329 ops/ns
49-
Int2ObjectSyncMapBenchmark.get_put SyncMap none true 50 100000 thrpt 5 0.646 ± 0.096 ops/ns
50-
Int2ObjectSyncMapBenchmark.get_put SyncMap presize false 50 100000 thrpt 5 0.650 ± 0.045 ops/ns
51-
Int2ObjectSyncMapBenchmark.get_put SyncMap presize true 50 100000 thrpt 5 0.674 ± 0.272 ops/ns
52-
Int2ObjectSyncMapBenchmark.get_put SyncMap prepopulate false 50 100000 thrpt 5 0.648 ± 0.059 ops/ns
53-
Int2ObjectSyncMapBenchmark.get_put SyncMap prepopulate true 50 100000 thrpt 5 0.627 ± 0.049 ops/ns
48+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap none false 50 100000 thrpt 5 0.632 ± 0.058 ops/ns
49+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap none true 50 100000 thrpt 5 0.639 ± 0.061 ops/ns
50+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap presize false 50 100000 thrpt 5 0.638 ± 0.031 ops/ns
51+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap presize true 50 100000 thrpt 5 0.665 ± 0.278 ops/ns
52+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap prepopulate false 50 100000 thrpt 5 0.645 ± 0.068 ops/ns
53+
Int2ObjectBucketSyncMapBenchmark.get_put BucketSyncMap prepopulate true 50 100000 thrpt 5 0.635 ± 0.083 ops/ns
5454
55-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap none false 50 100000 thrpt 5 0.017 ± 0.013 ops/ns
56-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap none true 50 100000 thrpt 5 0.018 ± 0.013 ops/ns
57-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap presize false 50 100000 thrpt 5 0.018 ± 0.011 ops/ns
58-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap presize true 50 100000 thrpt 5 0.018 ± 0.015 ops/ns
59-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap prepopulate false 50 100000 thrpt 5 0.021 ± 0.003 ops/ns
60-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap prepopulate true 50 100000 thrpt 5 0.018 ± 0.015 ops/ns
55+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap none false 50 100000 thrpt 5 0.018 ± 0.010 ops/ns
56+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap none true 50 100000 thrpt 5 0.019 ± 0.013 ops/ns
57+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap presize false 50 100000 thrpt 5 0.020 ± 0.002 ops/ns
58+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap presize true 50 100000 thrpt 5 0.015 ± 0.010 ops/ns
59+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap prepopulate false 50 100000 thrpt 5 0.017 ± 0.014 ops/ns
60+
Int2ObjectBucketSyncMapBenchmark.get_put SynchronizedMap prepopulate true 50 100000 thrpt 5 0.019 ± 0.010 ops/ns
6161
62-
Int2ObjectSyncMapBenchmark.put_only SyncMap none false 50 100000 thrpt 5 0.291 ± 0.121 ops/ns
63-
Int2ObjectSyncMapBenchmark.put_only SyncMap none true 50 100000 thrpt 5 0.279 ± 0.056 ops/ns
64-
Int2ObjectSyncMapBenchmark.put_only SyncMap presize false 50 100000 thrpt 5 0.304 ± 0.022 ops/ns
65-
Int2ObjectSyncMapBenchmark.put_only SyncMap presize true 50 100000 thrpt 5 0.311 ± 0.080 ops/ns
66-
Int2ObjectSyncMapBenchmark.put_only SyncMap prepopulate false 50 100000 thrpt 5 0.284 ± 0.065 ops/ns
67-
Int2ObjectSyncMapBenchmark.put_only SyncMap prepopulate true 50 100000 thrpt 5 0.521 ± 0.028 ops/ns
62+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap none false 50 100000 thrpt 5 0.303 ± 0.027 ops/ns
63+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap none true 50 100000 thrpt 5 0.309 ± 0.062 ops/ns
64+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap presize false 50 100000 thrpt 5 0.297 ± 0.028 ops/ns
65+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap presize true 50 100000 thrpt 5 0.309 ± 0.027 ops/ns
66+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap prepopulate false 50 100000 thrpt 5 0.288 ± 0.041 ops/ns
67+
Int2ObjectBucketSyncMapBenchmark.put_only BucketSyncMap prepopulate true 50 100000 thrpt 5 0.508 ± 0.036 ops/ns
6868
69-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap none false 50 100000 thrpt 5 0.024 ± 0.023 ops/ns
70-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap none true 50 100000 thrpt 5 0.022 ± 0.007 ops/ns
71-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap presize false 50 100000 thrpt 5 0.022 ± 0.002 ops/ns
72-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap presize true 50 100000 thrpt 5 0.023 ± 0.005 ops/ns
73-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.022 ± 0.001 ops/ns
74-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.021 ± 0.001 ops/ns
69+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap none false 50 100000 thrpt 5 0.022 ± 0.002 ops/ns
70+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap none true 50 100000 thrpt 5 0.022 ± 0.008 ops/ns
71+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap presize false 50 100000 thrpt 5 0.026 ± 0.026 ops/ns
72+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap presize true 50 100000 thrpt 5 0.023 ± 0.011 ops/ns
73+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.026 ± 0.028 ops/ns
74+
Int2ObjectBucketSyncMapBenchmark.put_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.022 ± 0.002 ops/ns
7575
```

collections-fastutil/src/jmh/java/space/vectrix/sync/collections/fastutil/Int2ObjectSyncMapBenchmark.java renamed to collections-fastutil/src/jmh/java/space/vectrix/sync/collections/fastutil/Int2ObjectBucketSyncMapBenchmark.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@
4848
@Measurement(iterations = 5)
4949
@BenchmarkMode(Mode.Throughput)
5050
@OutputTimeUnit(TimeUnit.NANOSECONDS)
51-
public class Int2ObjectSyncMapBenchmark {
51+
public class Int2ObjectBucketSyncMapBenchmark {
5252
@State(Scope.Benchmark)
5353
public static class Container {
54-
@Param({ "SyncMap", "SynchronizedMap" })
54+
@Param({ "BucketSyncMap", "SynchronizedMap" })
5555
private String implementation;
5656

5757
@Param({ "none", "presize", "prepopulate" })
@@ -71,7 +71,7 @@ public void setup() {
7171
final boolean prepopulate = "prepopulate".equalsIgnoreCase(this.mode);
7272

7373
switch(this.implementation) {
74-
case "SyncMap" -> this.map = presized ? new Int2ObjectBucketSyncMap<>(Int2ObjectBucketSyncMap.FASTEST_SPREAD, this.size) : new Int2ObjectBucketSyncMap<>(Int2ObjectBucketSyncMap.FASTEST_SPREAD);
74+
case "BucketSyncMap" -> this.map = presized ? new Int2ObjectBucketSyncMap<>(Int2ObjectBucketSyncMap.FASTEST_SPREAD, this.size) : new Int2ObjectBucketSyncMap<>(Int2ObjectBucketSyncMap.FASTEST_SPREAD);
7575
case "SynchronizedMap" -> this.map = presized
7676
? Int2ObjectMaps.synchronize(new Int2ObjectOpenHashMap<>(this.size))
7777
: Int2ObjectMaps.synchronize(new Int2ObjectOpenHashMap<>());

0 commit comments

Comments
 (0)