Skip to content

christianrpetrin/stack

 
 

Repository files navigation

stack Build Status codecov Go Report Card GoDoc

Package stack updates the ef-ds stack to operate on *TestValue struct instead of the default "interface{}" type.

Why

This is a test to check the performance impact of a data structure that operates on "interface{}" vs the final, concrete type.

Below commands can be used to check the performance difference of the default interface vs the new TestValue stack.

Run below from the stack main folder.

benchstat testdata/BenchmarkMicroserviceInterfaceStack.txt testdata/BenchmarkMicroserviceTestValueStack.txt
benchstat testdata/BenchmarkFillInterfaceStack.txt testdata/BenchmarkFillTestValueStack.txt
benchstat testdata/BenchmarkRefillInterfaceStack.txt testdata/BenchmarkRefillTestValueStack.txt
benchstat testdata/BenchmarkRefillFullInterfaceStack.txt testdata/BenchmarkRefillFullTestValueStack.txt
benchstat testdata/BenchmarkSlowIncreaseInterfaceStack.txt testdata/BenchmarkSlowIncreaseTestValueStack.txt
benchstat testdata/BenchmarkSlowDecreaseInterfaceStack.txt testdata/BenchmarkSlowDecreaseTestValueStack.txt
benchstat testdata/BenchmarkStableInterfaceStack.txt testdata/BenchmarkStableTestValueStack.txt

Results

benchstat testdata/BenchmarkMicroserviceInterfaceStack.txt testdata/BenchmarkMicroserviceTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          4.35ns ± 0%    4.36ns ± 1%     ~     (p=0.728 n=10+10)
/1-4           282ns ± 1%     274ns ± 1%   -2.88%  (p=0.000 n=9+10)
/10-4         2.03µs ± 0%    1.94µs ± 0%   -4.30%  (p=0.000 n=9+10)
/100-4        18.5µs ± 0%    17.7µs ± 1%   -4.75%  (p=0.000 n=9+10)
/1000-4        175µs ± 1%     168µs ± 1%   -3.91%  (p=0.000 n=9+10)
/10000-4      1.79ms ± 1%    1.71ms ± 1%   -4.60%  (p=0.000 n=9+9)
/100000-4     19.9ms ± 1%    18.7ms ± 1%   -6.11%  (p=0.000 n=9+10)
/1000000-4     207ms ± 3%     206ms ± 3%     ~     (p=0.529 n=10+10)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4            224B ± 0%      192B ± 0%  -14.29%  (p=0.000 n=10+10)
/10-4         1.49kB ± 0%    1.33kB ± 0%  -10.75%  (p=0.000 n=10+10)
/100-4        16.7kB ± 0%    14.0kB ± 0%  -16.30%  (p=0.000 n=10+10)
/1000-4        134kB ± 0%     123kB ± 0%   -8.15%  (p=0.000 n=10+10)
/10000-4      1.29MB ± 0%    1.21MB ± 0%   -6.56%  (p=0.000 n=10+10)
/100000-4     12.8MB ± 0%    12.0MB ± 0%   -6.29%  (p=0.000 n=10+10)
/1000000-4     128MB ± 0%     120MB ± 0%   -6.25%  (p=0.000 n=10+10)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            9.00 ± 0%      9.00 ± 0%     ~     (all equal)
/10-4           73.0 ± 0%      73.0 ± 0%     ~     (all equal)
/100-4           705 ± 0%       705 ± 0%     ~     (all equal)
/1000-4        7.01k ± 0%     7.01k ± 0%     ~     (all equal)
/10000-4       70.0k ± 0%     70.0k ± 0%     ~     (all equal)
/100000-4       700k ± 0%      700k ± 0%     ~     (all equal)
/1000000-4     7.00M ± 0%     7.00M ± 0%     ~     (all equal)
benchstat testdata/BenchmarkFillInterfaceStack.txt testdata/BenchmarkFillTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          1.17ns ± 3%    1.45ns ± 1%  +24.19%  (p=0.000 n=10+10)
/1-4           127ns ± 1%     119ns ± 1%   -6.23%  (p=0.000 n=9+10)
/10-4          463ns ± 1%     421ns ± 1%   -9.04%  (p=0.000 n=10+9)
/100-4        3.86µs ± 1%    3.31µs ± 0%  -14.28%  (p=0.000 n=10+10)
/1000-4       29.0µs ± 1%    26.8µs ± 1%   -7.73%  (p=0.000 n=10+10)
/10000-4       279µs ± 1%     263µs ± 1%   -5.75%  (p=0.000 n=9+9)
/100000-4     3.05ms ± 2%    3.46ms ± 8%  +13.41%  (p=0.000 n=10+10)
/1000000-4    74.3ms ±42%    85.7ms ±53%     ~     (p=0.353 n=10+10)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4            128B ± 0%       96B ± 0%  -25.00%  (p=0.000 n=10+10)
/10-4           528B ± 0%      368B ± 0%  -30.30%  (p=0.000 n=10+10)
/100-4        7.09kB ± 0%    4.37kB ± 0%  -38.37%  (p=0.000 n=10+10)
/1000-4       37.9kB ± 0%    27.0kB ± 0%  -28.81%  (p=0.000 n=10+10)
/10000-4       330kB ± 0%     245kB ± 0%  -25.67%  (p=0.000 n=10+10)
/100000-4     3.22MB ± 0%    2.41MB ± 0%  -25.05%  (p=0.000 n=10+10)
/1000000-4    32.1MB ± 0%    24.1MB ± 0%  -24.97%  (p=0.002 n=8+10)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            3.00 ± 0%      3.00 ± 0%     ~     (all equal)
/10-4           13.0 ± 0%      13.0 ± 0%     ~     (all equal)
/100-4           105 ± 0%       105 ± 0%     ~     (all equal)
/1000-4        1.01k ± 0%     1.01k ± 0%     ~     (all equal)
/10000-4       10.0k ± 0%     10.0k ± 0%     ~     (all equal)
/100000-4       100k ± 0%      100k ± 0%     ~     (all equal)
/1000000-4     1.00M ± 0%     1.00M ± 0%     ~     (all equal)
benchstat testdata/BenchmarkRefillInterfaceStack.txt testdata/BenchmarkRefillTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          16.3ns ± 1%    13.0ns ± 0%  -19.97%  (p=0.000 n=10+9)
/1-4           275ns ± 1%     262ns ± 1%   -4.62%  (p=0.000 n=10+9)
/10-4         2.60µs ± 1%    2.55µs ± 2%   -2.04%  (p=0.000 n=10+10)
/100-4        25.2µs ± 2%    24.8µs ± 0%   -1.84%  (p=0.000 n=10+9)
/1000-4        249µs ± 1%     246µs ± 2%     ~     (p=0.052 n=10+10)
/10000-4      2.59ms ± 4%    3.08ms ± 7%  +19.27%  (p=0.000 n=10+10)
/100000-4     40.3ms ± 5%    27.7ms ± 8%  -31.28%  (p=0.000 n=9+10)
/1000000-4     485ms ±29%     387ms ±10%  -20.16%  (p=0.003 n=9+10)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4            160B ± 0%      160B ± 0%     ~     (all equal)
/10-4         1.60kB ± 0%    1.60kB ± 0%     ~     (all equal)
/100-4        16.0kB ± 0%    16.0kB ± 0%     ~     (all equal)
/1000-4        160kB ± 0%     160kB ± 0%   -0.00%  (p=0.000 n=10+10)
/10000-4      1.60MB ± 0%    1.60MB ± 0%   -0.01%  (p=0.000 n=10+10)
/100000-4     16.0MB ± 0%    16.0MB ± 0%   -0.15%  (p=0.000 n=10+8)
/1000000-4     166MB ± 2%     163MB ± 0%   -1.84%  (p=0.000 n=10+9)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            10.0 ± 0%      10.0 ± 0%     ~     (all equal)
/10-4            100 ± 0%       100 ± 0%     ~     (all equal)
/100-4         1.00k ± 0%     1.00k ± 0%     ~     (all equal)
/1000-4        10.0k ± 0%     10.0k ± 0%     ~     (all equal)
/10000-4        100k ± 0%      100k ± 0%     ~     (all equal)
/100000-4      1.00M ± 0%     1.00M ± 0%     ~     (p=0.087 n=10+10)
/1000000-4     10.0M ± 0%     10.0M ± 0%     ~     (p=0.786 n=10+9)
benchstat testdata/BenchmarkRefillFullInterfaceStack.txt testdata/BenchmarkRefillFullTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          13.4ns ± 1%    13.1ns ± 1%   -2.54%  (p=0.000 n=10+10)
/1-4           293ns ± 3%     306ns ± 7%   +4.33%  (p=0.001 n=10+10)
/10-4         2.84µs ± 5%    3.08µs ± 5%   +8.43%  (p=0.000 n=10+10)
/100-4        27.0µs ± 1%    29.3µs ± 6%   +8.43%  (p=0.000 n=9+10)
/1000-4        272µs ± 3%     300µs ± 9%  +10.42%  (p=0.000 n=10+10)
/10000-4      2.70ms ± 1%    2.76ms ± 4%   +2.17%  (p=0.011 n=10+10)
/100000-4     37.8ms ± 4%    42.1ms ± 4%  +11.56%  (p=0.000 n=10+10)
/1000000-4     632ms ± 1%     385ms ±13%  -39.05%  (p=0.000 n=10+10)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4            160B ± 0%      160B ± 0%     ~     (all equal)
/10-4         1.60kB ± 0%    1.60kB ± 0%     ~     (all equal)
/100-4        16.0kB ± 0%    16.0kB ± 0%     ~     (all equal)
/1000-4        160kB ± 0%     160kB ± 0%     ~     (all equal)
/10000-4      1.60MB ± 0%    1.60MB ± 0%     ~     (all equal)
/100000-4     16.0MB ± 0%    16.0MB ± 0%     ~     (all equal)
/1000000-4     160MB ± 0%     160MB ± 0%     ~     (all equal)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            10.0 ± 0%      10.0 ± 0%     ~     (all equal)
/10-4            100 ± 0%       100 ± 0%     ~     (all equal)
/100-4         1.00k ± 0%     1.00k ± 0%     ~     (all equal)
/1000-4        10.0k ± 0%     10.0k ± 0%     ~     (all equal)
/10000-4        100k ± 0%      100k ± 0%     ~     (all equal)
/100000-4      1.00M ± 0%     1.00M ± 0%     ~     (all equal)
/1000000-4     10.0M ± 0%     10.0M ± 0%     ~     (all equal)
benchstat testdata/BenchmarkSlowIncreaseInterfaceStack.txt testdata/BenchmarkSlowIncreaseTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          1.16ns ± 0%    1.16ns ± 2%     ~     (p=0.776 n=8+9)
/1-4           151ns ± 1%     144ns ± 0%   -4.76%  (p=0.000 n=9+10)
/10-4          725ns ± 2%     682ns ± 1%   -5.96%  (p=0.000 n=9+10)
/100-4        6.48µs ± 4%    5.70µs ± 1%  -12.11%  (p=0.000 n=10+10)
/1000-4       56.3µs ± 4%    50.4µs ± 1%  -10.56%  (p=0.000 n=10+10)
/10000-4       554µs ± 8%     508µs ± 1%   -8.41%  (p=0.000 n=10+10)
/100000-4     7.93ms ±10%    4.94ms ± 1%  -37.66%  (p=0.000 n=10+10)
/1000000-4    76.7ms ±12%    73.1ms ±17%     ~     (p=0.387 n=9+9)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4            144B ± 0%      112B ± 0%  -22.22%  (p=0.000 n=10+10)
/10-4           688B ± 0%      528B ± 0%  -23.26%  (p=0.000 n=10+10)
/100-4        8.69kB ± 0%    5.97kB ± 0%  -31.31%  (p=0.000 n=10+10)
/1000-4       53.9kB ± 0%    43.0kB ± 0%  -20.26%  (p=0.000 n=10+10)
/10000-4       490kB ± 0%     405kB ± 0%  -17.28%  (p=0.000 n=10+10)
/100000-4     4.82MB ± 0%    4.01MB ± 0%  -16.73%  (p=0.000 n=10+9)
/1000000-4    48.1MB ± 0%    40.1MB ± 0%  -16.66%  (p=0.000 n=10+10)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            4.00 ± 0%      4.00 ± 0%     ~     (all equal)
/10-4           23.0 ± 0%      23.0 ± 0%     ~     (all equal)
/100-4           205 ± 0%       205 ± 0%     ~     (all equal)
/1000-4        2.01k ± 0%     2.01k ± 0%     ~     (all equal)
/10000-4       20.0k ± 0%     20.0k ± 0%     ~     (all equal)
/100000-4       200k ± 0%      200k ± 0%     ~     (all equal)
/1000000-4     2.00M ± 0%     2.00M ± 0%     ~     (all equal)
benchstat testdata/BenchmarkSlowDecreaseInterfaceStack.txt testdata/BenchmarkSlowDecreaseTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          0.89ns ± 6%    0.58ns ± 0%  -35.05%  (p=0.000 n=10+8)
/1-4          30.5ns ± 7%    28.2ns ± 1%   -7.48%  (p=0.000 n=9+10)
/10-4          299ns ± 2%     287ns ± 1%   -3.95%  (p=0.000 n=10+10)
/100-4        2.90µs ± 1%    2.82µs ± 2%   -2.70%  (p=0.000 n=9+9)
/1000-4       28.3µs ± 1%    27.9µs ± 1%   -1.54%  (p=0.000 n=9+10)
/10000-4       283µs ± 1%     279µs ± 0%   -1.47%  (p=0.000 n=10+8)
/100000-4     2.82ms ± 1%    2.78ms ± 1%   -1.25%  (p=0.000 n=10+10)
/1000000-4    28.1ms ± 1%    27.8ms ± 0%   -1.19%  (p=0.000 n=10+8)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4           16.0B ± 0%     16.0B ± 0%     ~     (all equal)
/10-4           160B ± 0%      160B ± 0%     ~     (all equal)
/100-4        1.60kB ± 0%    1.60kB ± 0%     ~     (all equal)
/1000-4       16.0kB ± 0%    16.0kB ± 0%     ~     (all equal)
/10000-4       160kB ± 0%     160kB ± 0%     ~     (all equal)
/100000-4     1.60MB ± 0%    1.60MB ± 0%     ~     (all equal)
/1000000-4    16.0MB ± 0%    16.0MB ± 0%     ~     (all equal)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            1.00 ± 0%      1.00 ± 0%     ~     (all equal)
/10-4           10.0 ± 0%      10.0 ± 0%     ~     (all equal)
/100-4           100 ± 0%       100 ± 0%     ~     (all equal)
/1000-4        1.00k ± 0%     1.00k ± 0%     ~     (all equal)
/10000-4       10.0k ± 0%     10.0k ± 0%     ~     (all equal)
/100000-4       100k ± 0%      100k ± 0%     ~     (all equal)
/1000000-4     1.00M ± 0%     1.00M ± 0%     ~     (all equal)
benchstat testdata/BenchmarkStableInterfaceStack.txt testdata/BenchmarkStableTestValueStack.txt
name        old time/op    new time/op    delta
/0-4          0.58ns ± 0%    0.87ns ± 1%  +50.69%  (p=0.000 n=9+10)
/1-4          28.0ns ± 3%    29.2ns ± 8%   +4.43%  (p=0.014 n=10+10)
/10-4          280ns ± 3%     294ns ± 6%   +4.96%  (p=0.000 n=9+9)
/100-4        2.75µs ± 2%    2.88µs ± 4%   +4.62%  (p=0.000 n=10+9)
/1000-4       27.4µs ± 4%    30.1µs ± 4%   +9.84%  (p=0.000 n=10+10)
/10000-4       275µs ± 3%     286µs ± 6%   +3.77%  (p=0.009 n=10+10)
/100000-4     2.73ms ± 4%    2.80ms ± 5%     ~     (p=0.105 n=10+10)
/1000000-4    27.4ms ± 3%    28.4ms ± 7%     ~     (p=0.052 n=10+10)

name        old alloc/op   new alloc/op   delta
/0-4           0.00B          0.00B          ~     (all equal)
/1-4           16.0B ± 0%     16.0B ± 0%     ~     (all equal)
/10-4           160B ± 0%      160B ± 0%     ~     (all equal)
/100-4        1.60kB ± 0%    1.60kB ± 0%     ~     (all equal)
/1000-4       16.0kB ± 0%    16.0kB ± 0%     ~     (all equal)
/10000-4       160kB ± 0%     160kB ± 0%     ~     (all equal)
/100000-4     1.60MB ± 0%    1.60MB ± 0%     ~     (all equal)
/1000000-4    16.0MB ± 0%    16.0MB ± 0%     ~     (all equal)

name        old allocs/op  new allocs/op  delta
/0-4            0.00           0.00          ~     (all equal)
/1-4            1.00 ± 0%      1.00 ± 0%     ~     (all equal)
/10-4           10.0 ± 0%      10.0 ± 0%     ~     (all equal)
/100-4           100 ± 0%       100 ± 0%     ~     (all equal)
/1000-4        1.00k ± 0%     1.00k ± 0%     ~     (all equal)
/10000-4       10.0k ± 0%     10.0k ± 0%     ~     (all equal)
/100000-4       100k ± 0%      100k ± 0%     ~     (all equal)
/1000000-4     1.00M ± 0%     1.00M ± 0%     ~     (all equal)

About

Package stack implements a very fast and efficient general purpose Last-In-First-out (LIFO) stack data structure that is specifically optimized to perform when used by Microservices and serverless services running in production environments.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 100.0%