Open jeff303 opened 3 years ago
I think this change should also cover must
because it calls do-keypath-transform
. Output of new benchmarks from my machine:
Benchmark: set keypath and nthpath at index to NONE versus srange in middle (vector)
Mean(us) vs best Code
31.2 1.00 (setval (nthpath middle-idx) NONE data-vec)
32.1 1.03 (setval (keypath middle-idx) NONE data-vec)
145 4.65 (setval (srange middle-idx (inc middle-idx)) [] data-vec)
********************************
Benchmark: set keypath and nthpath at index to NONE versus srange in middle (list)
Mean(us) vs best Code
5.56 1.00 (setval (keypath middle-idx) NONE data-lst)
12.5 2.24 (setval (srange middle-idx (inc middle-idx)) [] data-lst)
12.7 2.29 (setval (nthpath middle-idx) NONE data-lst)
********************************
Benchmark: set keypath and nthpath at beginning to NONE versus srange and subvec (vector)
Mean(us) vs best Code
0.0179 1.00 (subvec data-vec 1)
0.150 8.39 (setval (keypath 0) NONE data-vec)
0.160 8.89 (setval (nthpath 0) NONE data-vec)
107 5.98e+03 (setval (srange 0 1) [] data-vec)
********************************
Benchmark: set keypath and nthpath at beginning to NONE versus srange and rest (list)
Mean(us) vs best Code
0.00733 1.00 (rest data-lst)
0.192 26.3 (setval (keypath 0) NONE data-lst)
12.5 1.71e+03 (setval (srange 0 1) [] data-lst)
12.8 1.75e+03 (setval (nthpath 0) NONE data-lst)
********************************
Benchmark: set keypath and nthpath at end to NONE versus srange and subvec (vector)
Mean(us) vs best Code
0.0148 1.00 (subvec data-vec 0 (dec size))
0.257 17.4 (setval (keypath (dec size)) NONE data-vec)
0.275 18.6 (setval (nthpath (dec size)) NONE data-vec)
194 1.31e+04 (setval (srange (dec size) size) [] data-vec)
********************************
This should cover most of #219, although it doesn't do anything to address srange
performance.
Merging
InsertBeforeIndex
protocol into newIndexedOps
protocol for optimized indexed based operations (which now includes inserting before and removing at)Updating
nthpath
andkeypath
to use new helper fnsAdding tests and benchmarks