By avoiding the pit of despair that is v8's Error objects, we can eliminate the 15% of the process or so we spend creating these objects by using a lightweight container class. Arguably, stack traces aren't necessary here.
before:
1: SET 4KiB, 10000/0 min/max/avg/p95: 852/4506/2585.58/3779.10 7238ms total, 2763.19 ops/sec
1: SET 4KiB, 10000/0 min/max/avg/p95: 881/4373/2658.98/4036.20 7260ms total, 2754.82 ops/sec
1: SET 4KiB, 10000/0 min/max/avg/p95: 655/4438/2662.27/3855.65 7217ms total, 2771.23 ops/sec
1: GET 4KiB, 10000/0 min/max/avg/p95: 628/4482/2248.48/3562.50 6118ms total, 3269.04 ops/sec
1: GET 4KiB, 10000/0 min/max/avg/p95: 628/4080/2357.28/3738.55 6087ms total, 3285.69 ops/sec
1: GET 4KiB, 10000/0 min/max/avg/p95: 689/4894/2442.56/3894.10 6334ms total, 3157.56 ops/sec
1: SET 4KiB, 20000/0 min/max/avg/p95: 1789/5460/3375.80/5231.55 7626ms total, 2622.61 ops/sec
1: SET 4KiB, 20000/0 min/max/avg/p95: 1658/5809/3494.39/5613.70 7784ms total, 2569.37 ops/sec
1: SET 4KiB, 20000/0 min/max/avg/p95: 1655/6978/4041.88/6666.85 8966ms total, 2230.65 ops/sec
1: GET 4KiB, 20000/0 min/max/avg/p95: 1430/5415/3422.20/4720.40 6320ms total, 3164.56 ops/sec
1: GET 4KiB, 20000/0 min/max/avg/p95: 1172/5391/2866.71/4797.00 6257ms total, 3196.42 ops/sec
1: GET 4KiB, 20000/0 min/max/avg/p95: 1670/6135/3153.97/5514.10 6561ms total, 3048.32 ops/sec
1: SET 16KiB, 10000/0 min/max/avg/p95: 1011/5140/3759.07/4948.55 10402ms total, 1922.71 ops/sec
1: SET 16KiB, 10000/0 min/max/avg/p95: 1319/5496/3914.08/5205.55 10728ms total, 1864.28 ops/sec
1: SET 16KiB, 10000/0 min/max/avg/p95: 1199/5471/3639.33/5101.30 10074ms total, 1985.31 ops/sec
1: GET 16KiB, 10000/0 min/max/avg/p95: 637/4293/2425.64/4017.00 6353ms total, 3148.12 ops/sec
1: GET 16KiB, 10000/0 min/max/avg/p95: 1082/4054/2287.95/3746.10 6215ms total, 3218.02 ops/sec
1: GET 16KiB, 10000/0 min/max/avg/p95: 692/4383/2366.44/3606.10 6542ms total, 3057.17 ops/sec
1: SET 16KiB, 20000/0 min/max/avg/p95: 3106/9059/6129.85/8764.75 12186ms total, 1641.23 ops/sec
1: SET 16KiB, 20000/0 min/max/avg/p95: 3014/9196/5897.33/8722.30 12347ms total, 1619.83 ops/sec
1: SET 16KiB, 20000/0 min/max/avg/p95: 2633/8174/5211.64/7738.55 11013ms total, 1816.04 ops/sec
1: GET 16KiB, 20000/0 min/max/avg/p95: 1811/4470/3147.27/4137.30 6016ms total, 3324.47 ops/sec
1: GET 16KiB, 20000/0 min/max/avg/p95: 1654/27002/16802.13/25903.10 28112ms total, 711.44 ops/sec
1: GET 16KiB, 20000/0 min/max/avg/p95: 1819/4525/3244.00/4139.65 6458ms total, 3096.93 ops/sec
By avoiding the pit of despair that is v8's Error objects, we can eliminate the 15% of the process or so we spend creating these objects by using a lightweight container class. Arguably, stack traces aren't necessary here.
before:
flame
after:
flame