2021-02-02 GO LOCAL CACHE LIBRARY BENCHMARK

GO CACHE LIBRARY

  • GO언어 기반 프로젝트에서 로컬 CACHE를 사용해야될 일이 있었는데 얼핏 성능이 생각만큼 안나오는것 같아서 라이브러리 쥐잡듯 잡아 모두 벤치마킹 해버림
  • badger 말고는 모두 memory 기반, badger도 메모리 기반으로 실행 가능

이하 전문은 모두 레포지토리에..


test machine hardware info

cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)


cat /proc/cpuinfo
model name	: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
physical id	: 0
cpu cores	: 4
processor	: 7


cat /proc/meminfo
MemTotal    : 11983936 kB

normal bench, using 1024 bytes data

go test -bench=. -cpu=4 -benchmem
 ⚡ root@localhost  ~/go-all-cache-benchmark   master  go test -bench=. -cpu=4 -benchmem
goos: linux
goarch: amd64
pkg: github.com/ppzxc/go-all-cache-benchmark
BenchmarkMemoryGCache/Set_LRU-4         	 3569758	       325 ns/op	3150.99 MB/s	     151 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_LRU-4         	14463192	        82.6 ns/op	12390.76 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_LFU-4         	 2909048	       427 ns/op	2400.70 MB/s	     103 B/op	       2 allocs/op
BenchmarkMemoryGCache/Get_LFU-4         	14945622	        80.8 ns/op	12676.45 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_ARC-4         	 1918798	       555 ns/op	1844.37 MB/s	     151 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_ARC-4         	12585079	       105 ns/op	9768.09 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBigCache/Set-4           	 1980724	       660 ns/op	1550.42 MB/s	      24 B/op	       2 allocs/op
BenchmarkMemoryBigCache/Get-4           	 7500758	       174 ns/op	5873.94 MB/s	      46 B/op	       1 allocs/op
BenchmarkMemoryMCache/Set-4             	  290188	      3807 ns/op	 268.99 MB/s	    1129 B/op	       9 allocs/op
BenchmarkMemoryMCache/Get-4             	 1397383	       855 ns/op	1198.14 MB/s	     135 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Set-4           	  948326	      1547 ns/op	 661.74 MB/s	     295 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get-4           	 1523881	       684 ns/op	1496.64 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_GTTL-4      	  873480	      1577 ns/op	 649.17 MB/s	     300 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get_GTTL-4      	 1345822	       860 ns/op	1190.03 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_TTL-4       	  954970	      1586 ns/op	 645.56 MB/s	     294 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get_TTL-4       	 1367469	       889 ns/op	1152.50 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBadger/Set-4             	  109624	     11191 ns/op	  91.50 MB/s	    1127 B/op	      29 allocs/op
BenchmarkMemoryBadger/Get-4             	  712833	      1683 ns/op	 608.30 MB/s	     540 B/op	      12 allocs/op
BenchmarkMemoryCache/Set-4              	 2308275	       742 ns/op	1380.81 MB/s	     168 B/op	       5 allocs/op
BenchmarkMemoryCache/Get-4              	 4503571	       237 ns/op	4326.22 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryCache2go/Set-4           	 2093635	       737 ns/op	1389.98 MB/s	     283 B/op	       6 allocs/op
BenchmarkMemoryCache2go/Get-4           	 3320185	       350 ns/op	2926.86 MB/s	      23 B/op	       1 allocs/op
BenchmarkMemoryGoCache/Set-4            	 3894265	       464 ns/op	2208.31 MB/s	     141 B/op	       2 allocs/op
BenchmarkMemoryGoCache/Get-4            	 5531332	       219 ns/op	4668.39 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryRistretto/Set-4          	 2519400	       706 ns/op	1450.13 MB/s	     393 B/op	       4 allocs/op
BenchmarkMemoryRistretto/Get-4          	 3466861	       346 ns/op	2963.54 MB/s	      31 B/op	       2 allocs/op
BenchmarkMemoryFreeCache/Set-4          	 2582163	       550 ns/op	1860.30 MB/s	      47 B/op	       1 allocs/op
BenchmarkMemoryFreeCache/Get-4          	 1645215	       660 ns/op	1550.44 MB/s	    1031 B/op	       1 allocs/op
PASS
ok  	github.com/ppzxc/go-all-cache-benchmark	86.170s

fix count bench, using 1024 bytes data

go test -bench=. -cpu=4  -benchmem -benchtime 1000000x
 ⚡ root@localhost  ~/go-all-cache-benchmark   master  go test -bench=. -cpu=4  -benchmem -benchtime 1000000x
goos: linux
goarch: amd64
pkg: github.com/ppzxc/go-all-cache-benchmark
BenchmarkMemoryGCache/Set_LRU-4         	 1000000	       346 ns/op	2963.61 MB/s	     151 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_LRU-4         	 1000000	        82.4 ns/op	12427.33 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_LFU-4         	 1000000	       379 ns/op	2699.59 MB/s	     104 B/op	       2 allocs/op
BenchmarkMemoryGCache/Get_LFU-4         	 1000000	        93.8 ns/op	10913.52 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_ARC-4         	 1000000	       529 ns/op	1937.45 MB/s	     151 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_ARC-4         	 1000000	        94.7 ns/op	10809.33 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBigCache/Set-4           	 1000000	       608 ns/op	1684.67 MB/s	      23 B/op	       1 allocs/op
BenchmarkMemoryBigCache/Get-4           	 1000000	       274 ns/op	3739.49 MB/s	     300 B/op	       1 allocs/op
BenchmarkMemoryMCache/Set-4             	 1000000	      3941 ns/op	 259.82 MB/s	    1158 B/op	       9 allocs/op
BenchmarkMemoryMCache/Get-4             	 1000000	       899 ns/op	1139.43 MB/s	     135 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Set-4           	 1000000	      1432 ns/op	 715.20 MB/s	     288 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get-4           	 1000000	      1012 ns/op	1012.14 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_GTTL-4      	 1000000	      1525 ns/op	 671.28 MB/s	     288 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get_GTTL-4      	 1000000	      1222 ns/op	 837.75 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_TTL-4       	 1000000	      1449 ns/op	 706.66 MB/s	     288 B/op	       3 allocs/op
BenchmarkMemoryTTLCache/Get_TTL-4       	 1000000	      1222 ns/op	 837.74 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBadger/Set-4             	 1000000	     11483 ns/op	  89.18 MB/s	    1127 B/op	      29 allocs/op
BenchmarkMemoryBadger/Get-4             	 1000000	      1658 ns/op	 617.70 MB/s	     519 B/op	      12 allocs/op
BenchmarkMemoryCache/Set-4              	 1000000	       938 ns/op	1092.15 MB/s	     251 B/op	       7 allocs/op
BenchmarkMemoryCache/Get-4              	 1000000	       335 ns/op	3058.36 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryCache2go/Set-4           	 1000000	       854 ns/op	1199.11 MB/s	     347 B/op	       6 allocs/op
BenchmarkMemoryCache2go/Get-4           	 1000000	       356 ns/op	2877.47 MB/s	      23 B/op	       1 allocs/op
BenchmarkMemoryGoCache/Set-4            	 1000000	       488 ns/op	2099.24 MB/s	     240 B/op	       2 allocs/op
BenchmarkMemoryGoCache/Get-4            	 1000000	       222 ns/op	4602.69 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryRistretto/Set-4          	 1000000	       522 ns/op	1962.86 MB/s	     339 B/op	       4 allocs/op
BenchmarkMemoryRistretto/Get-4          	 1000000	       308 ns/op	3329.98 MB/s	      31 B/op	       2 allocs/op
BenchmarkMemoryFreeCache/Set-4          	 1000000	       574 ns/op	1784.71 MB/s	      72 B/op	       1 allocs/op
BenchmarkMemoryFreeCache/Get-4          	 1000000	       648 ns/op	1579.50 MB/s	    1031 B/op	       1 allocs/op
PASS
ok  	github.com/ppzxc/go-all-cache-benchmark	54.495s

fix time bench, using 1024 bytes data

go test -bench=. -cpu=4  -benchmem -benchtime 5s
 ✘ ⚡ root@localhost  ~/go-all-cache-benchmark   master  go test -bench=. -cpu=4  -benchmem -benchtime 5s 
goos: linux
goarch: amd64
pkg: github.com/ppzxc/go-all-cache-benchmark
BenchmarkMemoryGCache/Set_LRU-4         	16504808	       331 ns/op	3090.35 MB/s	     152 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_LRU-4         	73070196	        85.2 ns/op	12018.03 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_LFU-4         	12171514	       414 ns/op	2474.63 MB/s	     104 B/op	       2 allocs/op
BenchmarkMemoryGCache/Get_LFU-4         	65472864	        83.5 ns/op	12257.32 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryGCache/Set_ARC-4         	 8904129	       591 ns/op	1734.03 MB/s	     152 B/op	       3 allocs/op
BenchmarkMemoryGCache/Get_ARC-4         	63415984	        99.9 ns/op	10252.52 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBigCache/Set-4           	10006041	       663 ns/op	1543.65 MB/s	      24 B/op	       2 allocs/op
BenchmarkMemoryBigCache/Get-4           	36587178	       168 ns/op	6099.65 MB/s	      15 B/op	       1 allocs/op
BenchmarkMemoryMCache/Set-4             	 1448583	      3488 ns/op	 293.58 MB/s	     998 B/op	       9 allocs/op
BenchmarkMemoryMCache/Get-4             	 6313848	       848 ns/op	1206.94 MB/s	     135 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Set-4           	 4187820	      1417 ns/op	 722.64 MB/s	     220 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Get-4           	 9617332	       547 ns/op	1873.42 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_GTTL-4      	 3957517	      1750 ns/op	 585.12 MB/s	     225 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Get_GTTL-4      	 5981611	       923 ns/op	1109.16 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryTTLCache/Set_TTL-4       	 4108146	      1709 ns/op	 599.20 MB/s	     222 B/op	       2 allocs/op
BenchmarkMemoryTTLCache/Get_TTL-4       	 5763652	       991 ns/op	1033.33 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryBadger/Set-4             	  553262	     11280 ns/op	  90.78 MB/s	    1127 B/op	      29 allocs/op
BenchmarkMemoryBadger/Get-4             	 3656499	      1700 ns/op	 602.52 MB/s	     540 B/op	      12 allocs/op
BenchmarkMemoryCache/Set-4              	10212211	       762 ns/op	1343.58 MB/s	     158 B/op	       5 allocs/op
BenchmarkMemoryCache/Get-4              	22535676	       236 ns/op	4345.72 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryCache2go/Set-4           	 6940514	       952 ns/op	1075.76 MB/s	     348 B/op	       6 allocs/op
BenchmarkMemoryCache2go/Get-4           	17639505	       324 ns/op	3162.79 MB/s	      23 B/op	       1 allocs/op
BenchmarkMemoryGoCache/Set-4            	11678008	       496 ns/op	2065.33 MB/s	     163 B/op	       2 allocs/op
BenchmarkMemoryGoCache/Get-4            	26572488	       226 ns/op	4540.56 MB/s	       7 B/op	       0 allocs/op
BenchmarkMemoryRistretto/Set-4          	12783396	       661 ns/op	1548.59 MB/s	     376 B/op	       4 allocs/op
BenchmarkMemoryRistretto/Get-4          	16195382	       386 ns/op	2652.43 MB/s	      31 B/op	       2 allocs/op
BenchmarkMemoryFreeCache/Set-4          	10401394	       986 ns/op	1039.05 MB/s	      27 B/op	       1 allocs/op
BenchmarkMemoryFreeCache/Get-4          	20908278	       376 ns/op	2725.81 MB/s	     202 B/op	       1 allocs/op
PASS
ok  	github.com/ppzxc/go-all-cache-benchmark	400.426s

Reference