Skip to content

Commit ea0f525

Browse files
improve SyncMap (#20)
1 parent b5fd018 commit ea0f525

File tree

4 files changed

+446
-433
lines changed

4 files changed

+446
-433
lines changed

collections-fastutil/benchmarks.md

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,63 +13,63 @@ The following results were recorded on an _M4 Macbook Pro_, using 8 threads and
1313
100,000 entries for each benchmark:
1414

1515
- `Int2ObjectSyncMap` **get()** speed is...
16-
- 5693.1% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
17-
- 6365.4% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
18-
- 12794.7% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
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.
1919

2020
- `Int2ObjectSyncMap` **put()** speed is...
21-
- 1052.4% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
22-
- 869.2% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
23-
- 2309.5% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
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.
2424

2525
- `Int2ObjectSyncMap` **put()** then **get()** speed is...
26-
- 3221.0% **FASTER** than `Int2ObjectMaps#synchronize()` for an empty map.
27-
- 3342.1% **FASTER** than `Int2ObjectMaps#synchronize()` for a presized empty map.
28-
- 4000.0% **FASTER** than `Int2ObjectMaps#synchronize()` for a full map.
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.
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.680 ± 0.001 ops/ns
35-
Int2ObjectSyncMapBenchmark.get_only SyncMap none true 50 100000 thrpt 5 1.680 ± 0.001 ops/ns
36-
Int2ObjectSyncMapBenchmark.get_only SyncMap presize false 50 100000 thrpt 5 1.681 ± 0.003 ops/ns
37-
Int2ObjectSyncMapBenchmark.get_only SyncMap presize true 50 100000 thrpt 5 1.679 ± 0.003 ops/ns
38-
Int2ObjectSyncMapBenchmark.get_only SyncMap prepopulate false 50 100000 thrpt 5 1.752 ± 1.043 ops/ns
39-
Int2ObjectSyncMapBenchmark.get_only SyncMap prepopulate true 50 100000 thrpt 5 2.450 ± 0.029 ops/ns
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
4040
41-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap none false 50 100000 thrpt 5 0.029 ± 0.032 ops/ns
42-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap none true 50 100000 thrpt 5 0.034 ± 0.069 ops/ns
43-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap presize false 50 100000 thrpt 5 0.026 ± 0.007 ops/ns
44-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap presize true 50 100000 thrpt 5 0.036 ± 0.079 ops/ns
45-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.023 ± 0.023 ops/ns
46-
Int2ObjectSyncMapBenchmark.get_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.019 ± 0.016 ops/ns
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
4747
48-
Int2ObjectSyncMapBenchmark.get_put SyncMap none false 50 100000 thrpt 5 0.621 ± 0.063 ops/ns
49-
Int2ObjectSyncMapBenchmark.get_put SyncMap none true 50 100000 thrpt 5 0.631 ± 0.078 ops/ns
50-
Int2ObjectSyncMapBenchmark.get_put SyncMap presize false 50 100000 thrpt 5 0.634 ± 0.081 ops/ns
51-
Int2ObjectSyncMapBenchmark.get_put SyncMap presize true 50 100000 thrpt 5 0.654 ± 0.157 ops/ns
52-
Int2ObjectSyncMapBenchmark.get_put SyncMap prepopulate false 50 100000 thrpt 5 0.638 ± 0.053 ops/ns
53-
Int2ObjectSyncMapBenchmark.get_put SyncMap prepopulate true 50 100000 thrpt 5 0.615 ± 0.039 ops/ns
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
5454
55-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap none false 50 100000 thrpt 5 0.019 ± 0.009 ops/ns
56-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap none true 50 100000 thrpt 5 0.019 ± 0.010 ops/ns
57-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap presize false 50 100000 thrpt 5 0.018 ± 0.014 ops/ns
58-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap presize true 50 100000 thrpt 5 0.019 ± 0.011 ops/ns
59-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap prepopulate false 50 100000 thrpt 5 0.020 ± 0.011 ops/ns
60-
Int2ObjectSyncMapBenchmark.get_put SynchronizedMap prepopulate true 50 100000 thrpt 5 0.015 ± 0.012 ops/ns
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
6161
62-
Int2ObjectSyncMapBenchmark.put_only SyncMap none false 50 100000 thrpt 5 0.223 ± 0.082 ops/ns
63-
Int2ObjectSyncMapBenchmark.put_only SyncMap none true 50 100000 thrpt 5 0.242 ± 0.035 ops/ns
64-
Int2ObjectSyncMapBenchmark.put_only SyncMap presize false 50 100000 thrpt 5 0.239 ± 0.128 ops/ns
65-
Int2ObjectSyncMapBenchmark.put_only SyncMap presize true 50 100000 thrpt 5 0.252 ± 0.115 ops/ns
66-
Int2ObjectSyncMapBenchmark.put_only SyncMap prepopulate false 50 100000 thrpt 5 0.258 ± 0.046 ops/ns
67-
Int2ObjectSyncMapBenchmark.put_only SyncMap prepopulate true 50 100000 thrpt 5 0.506 ± 0.055 ops/ns
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
6868
69-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap none false 50 100000 thrpt 5 0.022 ± 0.001 ops/ns
70-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap none true 50 100000 thrpt 5 0.021 ± 0.001 ops/ns
71-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap presize false 50 100000 thrpt 5 0.023 ± 0.011 ops/ns
72-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap presize true 50 100000 thrpt 5 0.026 ± 0.025 ops/ns
73-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap prepopulate false 50 100000 thrpt 5 0.022 ± 0.005 ops/ns
74-
Int2ObjectSyncMapBenchmark.put_only SynchronizedMap prepopulate true 50 100000 thrpt 5 0.021 ± 0.001 ops/ns
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
7575
```

0 commit comments

Comments
 (0)