`assoc-in` preamble
See the overall summary for benchmarking details. The benchmarks displayed in this document are defined here.
assoc-in* version 5 improves the performance on hashmaps to near parity with clojure.core/assoc-in.
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 1.2e-07±7.7e-10 | 3.7e-07±3.2e-09 | 6.8e-07±1.9e-08 | 8.4e-07±9.3e-09 | 1.0e-06±1.5e-08 | 1.2e-06±1.1e-08 |
| 5 | 9.7e-08±3.0e-10 | 3.8e-07±6.5e-09 | 6.5e-07±2.3e-09 | 8.1e-07±1.8e-08 | 9.1e-07±4.4e-09 | 1.0e-06±4.7e-09 |
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 2.7e-07±7.1e-10 | 6.9e-07±3.2e-09 | 1.3e-06±1.3e-08 | 1.7e-06±5.0e-09 | 2.2e-06±1.5e-08 | 2.6e-06±9.1e-09 |
| 5 | 9.5e-08±4.7e-10 | 3.7e-07±4.2e-09 | 8.2e-07±2.0e-09 | 9.5e-07±3.2e-09 | 1.1e-06±1.1e-08 | 1.2e-06±1.2e-08 |
Version 5 offers a bit of improved performance for nested lists.
| arg, n | ||||
|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 |
| 4 | 9.7e-07±6.1e-09 | 3.9e-06±4.1e-08 | 9.9e-06±3.7e-08 | 1.9e-05±1.1e-07 |
| 5 | 8.1e-07±1.6e-08 | 3.4e-06±3.7e-08 | 8.8e-06±6.5e-08 | 1.8e-05±3.0e-08 |
Version 5 offers a bit of improved performance for nested sequences.
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 2.2e-07±1.1e-09 | 3.9e-06±5.9e-08 | 1.0e-05±3.1e-08 | 2.0e-05±1.2e-07 | 3.5e-05±3.5e-07 | 5.4e-05±2.2e-07 |
| 5 | 1.3e-07±4.2e-10 | 3.4e-06±1.1e-07 | 8.8e-06±1.2e-07 | 1.8e-05±1.2e-07 | 3.2e-05±3.7e-07 | 5.2e-05±1.1e-06 |
The top two panels display strange behavior, suggesting that clojure.core/get changed performance. Discounting that spurious change,
compared to itself, assoc-in* version 5 performed 33 to 67% faster than version 4.
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 10 | 100 | 1000 | 10000 | 100000 |
| 4 | 3.4e-07±1.1e-09 | 3.9e-07±1.6e-09 | 4.4e-07±1.3e-09 | 5.0e-07±9.1e-09 | 5.6e-07±8.1e-09 | 6.0e-07±8.2e-09 |
| 5 | 3.0e-07±3.1e-09 | 3.3e-07±4.0e-09 | 3.6e-07±1.0e-09 | 3.9e-07±3.0e-09 | 4.3e-07±7.5e-09 | 4.4e-07±7.0e-09 |
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 1.1e-07±1.5e-09 | 2.8e-07±8.0e-10 | 3.9e-07±2.3e-09 | 5.0e-07±6.7e-09 | 6.1e-07±3.4e-09 | 7.3e-07±3.0e-09 |
| 5 | 9.2e-08±1.3e-09 | 2.6e-07±2.5e-09 | 3.5e-07±3.4e-09 | 4.2e-07±3.3e-09 | 5.2e-07±3.9e-09 | 6.1e-07±1.1e-08 |
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 10 | 100 | 1000 | 10000 | 100000 |
| 4 | 1.4e-06±1.3e-08 | 1.5e-06±1.4e-08 | 1.5e-06±2.9e-09 | 1.6e-06±5.7e-09 | 1.6e-06±7.1e-09 | 1.7e-06±8.2e-09 |
| 5 | 7.3e-07±1.3e-09 | 7.7e-07±4.0e-09 | 8.0e-07±3.1e-09 | 8.3e-07±3.1e-09 | 8.6e-07±5.1e-09 | 9.0e-07±1.5e-08 |
| arg, n | ||||||
|---|---|---|---|---|---|---|
| version | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 2.7e-07±1.1e-09 | 6.6e-07±3.4e-09 | 1.1e-06±3.2e-09 | 1.5e-06±2.0e-08 | 1.9e-06±5.4e-09 | 2.3e-06±1.1e-08 |
| 5 | 1.8e-07±7.5e-10 | 3.8e-07±1.2e-09 | 5.5e-07±2.9e-09 | 7.1e-07±3.7e-09 | 8.7e-07±2.8e-09 | 1.0e-06±3.1e-09 |