diff --git a/go.mod b/go.mod
index 6f0bc89..ded702a 100644
--- a/go.mod
+++ b/go.mod
@@ -1,7 +1,7 @@
 module github.com/GeniusesGroup/go-benchmarks
 
-go 1.19
+go 1.21
 
 require (
-	github.com/GeniusesGroup/libgo v0.0.0-20220713101832-828057a9d3d4
+	github.com/GeniusesGroup/memar-go v0.0.0-20230923141417-dbb38f750948
 )
diff --git a/map-vs-slice/small.go b/map-vs-slice/small.go
new file mode 100644
index 0000000..d2fe0bd
--- /dev/null
+++ b/map-vs-slice/small.go
@@ -0,0 +1,61 @@
+/* For license and copyright information please see the LEGAL file in the code repository */
+
+package ms
+
+import "strconv"
+
+const kvNumber = 16
+const notExistKey = "NotExistKey"
+
+type smallMap map[string]string
+
+func (sm *smallMap) Init() {
+	*sm = make(smallMap, kvNumber)
+}
+func (sm smallMap) Fill() {
+	for i := 0; i < kvNumber; i++ {
+		var index = strconv.Itoa(i)
+		sm[index] = index
+	}
+}
+func (ss smallMap) GetMiddle() string {
+	var middle = kvNumber / 2
+	var middleIndex = strconv.Itoa(middle)
+	return ss[middleIndex]
+}
+func (ss smallMap) GetNotExist() string {
+	return ss[notExistKey]
+}
+
+type smallSlice []smallSlice_KV
+
+type smallSlice_KV struct {
+	key   string
+	value string
+}
+
+func (ss *smallSlice) Init() {
+	*ss = make(smallSlice, kvNumber)
+}
+func (ss smallSlice) Fill() {
+	for i := 0; i < kvNumber; i++ {
+		var index = strconv.Itoa(i)
+		ss[i] = smallSlice_KV{index, index}
+	}
+}
+func (ss smallSlice) Find(key string) string {
+	for i := 0; i < kvNumber; i++ {
+		if ss[i].key == key {
+			return ss[i].value
+		}
+	}
+	return ""
+}
+func (ss smallSlice) GetMiddle() string {
+	var middle = kvNumber / 2
+	var middleIndex = strconv.Itoa(middle)
+	return ss.Find(middleIndex)
+}
+func (ss smallSlice) GetNotExist() string {
+	return ss.Find(notExistKey)
+}
diff --git a/map-vs-slice/small_bench_test.go b/map-vs-slice/small_bench_test.go
new file mode 100644
index 0000000..a47562d
--- /dev/null
+++ b/map-vs-slice/small_bench_test.go
@@ -0,0 +1,80 @@
+/* For license and copyright information please see the LEGAL file in the code repository */
+
+package ms
+
+import (
+	"fmt"
+	"runtime"
+	"testing"
+)
+
+/*
+Number of CPU used: 8
+goos: windows
+goarch: amd64
+pkg: github.com/GeniusesGroup/go-benchmarks/map-vs-slice
+cpu: Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz
+Benchmark_smallMap_Insert-8          	  995197	      1253 ns/op	    1208 B/op	       2 allocs/op
+Benchmark_smallSlice_Insert-8        	 3574993	       334.6 ns/op	     512 B/op	       1 allocs/op
+Benchmark_smallMap_GetMiddle-8       	  898304	      1267 ns/op	    1208 B/op	       2 allocs/op
+Benchmark_smallSlice_GetMiddle-8     	 2907439	       430.9 ns/op	     512 B/op	       1 allocs/op
+Benchmark_smallMap_GetNotExist-8     	  908842	      1359 ns/op	    1208 B/op	       2 allocs/op
+Benchmark_smallSlice_GetNotExist-8   	 3342152	       354.9 ns/op	     512 B/op	       1 allocs/op
+*/
+
+func init() {
+	fmt.Println("Number of CPU used:", runtime.NumCPU())
+}
+
+/*
+	Benchmarks
+*/
+
+func Benchmark_smallMap_Insert(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var sm smallMap
+		sm.Init()
+		sm.Fill()
+	}
+}
+func Benchmark_smallSlice_Insert(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var ss smallSlice
+		ss.Init()
+		ss.Fill()
+	}
+}
+
+func Benchmark_smallMap_GetMiddle(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var sm smallMap
+		sm.Init()
+		sm.Fill()
+		sm.GetMiddle()
+	}
+}
+func Benchmark_smallSlice_GetMiddle(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var ss smallSlice
+		ss.Init()
+		ss.Fill()
+		ss.GetMiddle()
+	}
+}
+
+func Benchmark_smallMap_GetNotExist(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var sm smallMap
+		sm.Init()
+		sm.Fill()
+		sm.GetNotExist()
+	}
+}
+func Benchmark_smallSlice_GetNotExist(b *testing.B) {
+	for n := 0; n < b.N; n++ {
+		var ss smallSlice
+		ss.Init()
+		ss.Fill()
+		ss.GetNotExist()
+	}
+}