Skip to content

Instantly share code, notes, and snippets.

@snowmerak
Created October 23, 2023 07:39
Show Gist options
  • Save snowmerak/fe9d73c9b192bcd35fc97d34b446d689 to your computer and use it in GitHub Desktop.
Save snowmerak/fe9d73c9b192bcd35fc97d34b446d689 to your computer and use it in GitHub Desktop.
package main_test
import (
"strconv"
"testing"
"github.com/dolthub/swiss"
)
const sessionsCount = 131072
func benchmarkSwissTemplate(b *testing.B, size uint32) {
for i := 0; i < b.N; i++ {
m := swiss.NewMap[string, string](size)
for i := 0; i < sessionsCount; i++ {
m.Put(strconv.Itoa(i), strconv.Itoa(i))
}
for i := 0; i < sessionsCount; i++ {
_, _ = m.Get(strconv.Itoa(i))
}
}
}
func BenchmarkSwissMap1024(b *testing.B) {
benchmarkSwissTemplate(b, 1024)
}
func BenchmarkSwissMap2048(b *testing.B) {
benchmarkSwissTemplate(b, 2048)
}
func BenchmarkSwissMap4096(b *testing.B) {
benchmarkSwissTemplate(b, 4096)
}
func BenchmarkSwissMap8192(b *testing.B) {
benchmarkSwissTemplate(b, 8192)
}
func BenchmarkSwissMap16384(b *testing.B) {
benchmarkSwissTemplate(b, 16384)
}
func BenchmarkSwissMap32768(b *testing.B) {
benchmarkSwissTemplate(b, 32768)
}
func BenchmarkSwissMap65536(b *testing.B) {
benchmarkSwissTemplate(b, 65536)
}
func BenchmarkSwissMap131072(b *testing.B) {
benchmarkSwissTemplate(b, 131072)
}
func BenchmarkSwissMap262144(b *testing.B) {
benchmarkSwissTemplate(b, 262144)
}

1024

BenchmarkSwissMap32-8      	   13551	     87431 ns/op	   92560 B/op	    2785 allocs/op
BenchmarkSwissMap64-8      	   13800	     86516 ns/op	   91233 B/op	    2783 allocs/op
BenchmarkSwissMap128-8     	   13972	     85592 ns/op	   87440 B/op	    2781 allocs/op
BenchmarkSwissMap256-8     	   14454	     83545 ns/op	   80752 B/op	    2779 allocs/op
BenchmarkSwissMap512-8     	   15352	     77903 ns/op	   70960 B/op	    2777 allocs/op
BenchmarkSwissMap1024-8    	   17995	     66336 ns/op	   51248 B/op	    2775 allocs/op
BenchmarkSwissMap2048-8    	   19551	     61936 ns/op	   93616 B/op	    2775 allocs/op
BenchmarkSwissMap4096-8    	   18114	     66503 ns/op	  169521 B/op	    2775 allocs/op
BenchmarkSwissMap8192-8    	   15460	     78595 ns/op	  321587 B/op	    2775 allocs/op
BenchmarkSwissMap16384-8   	   12952	     92619 ns/op	  634290 B/op	    2775 allocs/op
BenchmarkSwissMap32768-8   	    8354	    145976 ns/op	 1254202 B/op	    2775 allocs/op
BenchmarkSwissMap65536-8   	    5413	    278637 ns/op	 2491194 B/op	    2775 allocs/op

2048

BenchmarkSwissMap32-8      	    6618	    187214 ns/op	  189458 B/op	    5859 allocs/op
BenchmarkSwissMap64-8      	    6691	    190379 ns/op	  188130 B/op	    5857 allocs/op
BenchmarkSwissMap128-8     	    6788	    190409 ns/op	  184338 B/op	    5855 allocs/op
BenchmarkSwissMap256-8     	    6912	    180842 ns/op	  177650 B/op	    5853 allocs/op
BenchmarkSwissMap512-8     	    6982	    177397 ns/op	  167859 B/op	    5851 allocs/op
BenchmarkSwissMap1024-8    	    7521	    160925 ns/op	  148146 B/op	    5849 allocs/op
BenchmarkSwissMap2048-8    	    8838	    138015 ns/op	  105904 B/op	    5847 allocs/op
BenchmarkSwissMap4096-8    	    9602	    127209 ns/op	  181809 B/op	    5847 allocs/op
BenchmarkSwissMap8192-8    	    8767	    137279 ns/op	  333875 B/op	    5847 allocs/op
BenchmarkSwissMap16384-8   	    7507	    166114 ns/op	  646583 B/op	    5847 allocs/op
BenchmarkSwissMap32768-8   	    6380	    211755 ns/op	 1266490 B/op	    5847 allocs/op
BenchmarkSwissMap65536-8   	    3780	    288467 ns/op	 2503488 B/op	    5847 allocs/op

4096

BenchmarkSwissMap32-8      	    3273	    381539 ns/op	  383251 B/op	   12005 allocs/op
BenchmarkSwissMap64-8      	    3290	    368579 ns/op	  381924 B/op	   12003 allocs/op
BenchmarkSwissMap128-8     	    3310	    364981 ns/op	  369428 B/op	   12001 allocs/op
BenchmarkSwissMap256-8     	    3321	    361054 ns/op	  362738 B/op	   11999 allocs/op
BenchmarkSwissMap512-8     	    3380	    359334 ns/op	  352946 B/op	   11997 allocs/op
BenchmarkSwissMap1024-8    	    3460	    346140 ns/op	  333234 B/op	   11995 allocs/op
BenchmarkSwissMap2048-8    	    3748	    324809 ns/op	  290995 B/op	   11993 allocs/op
BenchmarkSwissMap4096-8    	    4282	    285636 ns/op	  206385 B/op	   11991 allocs/op
BenchmarkSwissMap8192-8    	    4633	    258045 ns/op	  358451 B/op	   11991 allocs/op
BenchmarkSwissMap16384-8   	    4267	    284665 ns/op	  671159 B/op	   11991 allocs/op
BenchmarkSwissMap32768-8   	    3645	    331162 ns/op	 1291065 B/op	   11991 allocs/op
BenchmarkSwissMap65536-8   	    3070	    397836 ns/op	 2528066 B/op	   11991 allocs/op

8192

BenchmarkSwissMap32-8      	    1464	    786659 ns/op	  770328 B/op	   24295 allocs/op
BenchmarkSwissMap64-8      	    1598	    754905 ns/op	  769001 B/op	   24293 allocs/op
BenchmarkSwissMap128-8     	    1616	    740592 ns/op	  739608 B/op	   24291 allocs/op
BenchmarkSwissMap256-8     	    1628	    742773 ns/op	  724477 B/op	   24289 allocs/op
BenchmarkSwissMap512-8     	    1639	    753317 ns/op	  714675 B/op	   24287 allocs/op
BenchmarkSwissMap1024-8    	    1593	    748625 ns/op	  694962 B/op	   24285 allocs/op
BenchmarkSwissMap2048-8    	    1682	    711503 ns/op	  652724 B/op	   24283 allocs/op
BenchmarkSwissMap4096-8    	    1785	    675601 ns/op	  568113 B/op	   24281 allocs/op
BenchmarkSwissMap8192-8    	    2178	    553752 ns/op	  407604 B/op	   24279 allocs/op
BenchmarkSwissMap16384-8   	    2324	    519870 ns/op	  720311 B/op	   24279 allocs/op
BenchmarkSwissMap32768-8   	    1978	    590036 ns/op	 1340228 B/op	   24279 allocs/op
BenchmarkSwissMap65536-8   	    1838	    645514 ns/op	 2577219 B/op	   24279 allocs/op

16384

BenchmarkSwissMap32-8      	     637	   1647935 ns/op	 1570007 B/op	   48873 allocs/op
BenchmarkSwissMap64-8      	     734	   1660229 ns/op	 1568681 B/op	   48871 allocs/op
BenchmarkSwissMap128-8     	     733	   1643327 ns/op	 1506519 B/op	   48869 allocs/op
BenchmarkSwissMap256-8     	     728	   1657897 ns/op	 1473591 B/op	   48867 allocs/op
BenchmarkSwissMap512-8     	     724	   1676121 ns/op	 1463799 B/op	   48865 allocs/op
BenchmarkSwissMap1024-8    	     710	   1668200 ns/op	 1444087 B/op	   48863 allocs/op
BenchmarkSwissMap2048-8    	     774	   1564677 ns/op	 1401848 B/op	   48861 allocs/op
BenchmarkSwissMap4096-8    	     801	   1502363 ns/op	 1317240 B/op	   48859 allocs/op
BenchmarkSwissMap8192-8    	     847	   1420755 ns/op	 1156722 B/op	   48857 allocs/op
BenchmarkSwissMap16384-8   	    1035	   1162048 ns/op	  844155 B/op	   48855 allocs/op
BenchmarkSwissMap32768-8   	    1098	   1097557 ns/op	 1464066 B/op	   48855 allocs/op
BenchmarkSwissMap65536-8   	    1003	   1217897 ns/op	 2701065 B/op	   48855 allocs/op

32768

BenchmarkSwissMap1024-8     	     330	   3535364 ns/op	 2951422 B/op	   98017 allocs/op
BenchmarkSwissMap2048-8     	     355	   3421662 ns/op	 2909183 B/op	   98015 allocs/op
BenchmarkSwissMap4096-8     	     366	   3299028 ns/op	 2824598 B/op	   98013 allocs/op
BenchmarkSwissMap8192-8     	     349	   3456285 ns/op	 2664063 B/op	   98011 allocs/op
BenchmarkSwissMap16384-8    	     391	   3074472 ns/op	 2351497 B/op	   98009 allocs/op
BenchmarkSwissMap32768-8    	     490	   2441075 ns/op	 1726215 B/op	   98007 allocs/op
BenchmarkSwissMap65536-8    	     520	   2376701 ns/op	 2963231 B/op	   98007 allocs/op
BenchmarkSwissMap131072-8   	     486	   2488536 ns/op	 5437210 B/op	   98007 allocs/op
BenchmarkSwissMap262144-8   	     384	   3050891 ns/op	10376981 B/op	   98007 allocs/op

65536

BenchmarkSwissMap1024-8     	     157	   7535908 ns/op	 5966077 B/op	  196323 allocs/op
BenchmarkSwissMap2048-8     	     165	   7222008 ns/op	 5915648 B/op	  196321 allocs/op
BenchmarkSwissMap4096-8     	     164	   7230326 ns/op	 5831040 B/op	  196319 allocs/op
BenchmarkSwissMap8192-8     	     169	   7078272 ns/op	 5670528 B/op	  196317 allocs/op
BenchmarkSwissMap16384-8    	     175	   6805246 ns/op	 5357952 B/op	  196315 allocs/op
BenchmarkSwissMap32768-8    	     187	   6403508 ns/op	 4732672 B/op	  196313 allocs/op
BenchmarkSwissMap65536-8    	     234	   5050365 ns/op	 3487508 B/op	  196311 allocs/op
BenchmarkSwissMap131072-8   	     253	   4914185 ns/op	 5961491 B/op	  196311 allocs/op
BenchmarkSwissMap262144-8   	     216	   5615753 ns/op	10901260 B/op	  196311 allocs/op

131072

BenchmarkSwissMap1024-8     	      74	  16145617 ns/op	12235788 B/op	  392933 allocs/op
BenchmarkSwissMap2048-8     	      79	  15165282 ns/op	12168962 B/op	  392931 allocs/op
BenchmarkSwissMap4096-8     	      78	  15130010 ns/op	12084353 B/op	  392929 allocs/op
BenchmarkSwissMap8192-8     	      80	  14858868 ns/op	11923825 B/op	  392927 allocs/op
BenchmarkSwissMap16384-8    	      79	  14967021 ns/op	11611264 B/op	  392925 allocs/op
BenchmarkSwissMap32768-8    	      84	  14221923 ns/op	10985984 B/op	  392923 allocs/op
BenchmarkSwissMap65536-8    	      88	  14447856 ns/op	 9740810 B/op	  392921 allocs/op
BenchmarkSwissMap131072-8   	     100	  10378378 ns/op	 7258631 B/op	  392919 allocs/op
BenchmarkSwissMap262144-8   	     100	  11713274 ns/op	12198402 B/op	  392919 allocs/op
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment