From eacce5c5fdd4b7513e3002c886f1714c94b289a1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 7 May 2020 13:11:58 +0300 Subject: [PATCH] Updated Benchmarks for NavigableMap --- config/navigablemap_test.go | 66 +++++++++++++++++++++++++++++++ packages/debian/changelog | 1 + utils/orderednavigablemap_test.go | 53 ------------------------- 3 files changed, 67 insertions(+), 53 deletions(-) diff --git a/config/navigablemap_test.go b/config/navigablemap_test.go index 38e8e8841..fc0b88062 100644 --- a/config/navigablemap_test.go +++ b/config/navigablemap_test.go @@ -20,6 +20,7 @@ package config import ( "encoding/xml" "fmt" + "math/rand" "reflect" "sort" "strings" @@ -1512,3 +1513,68 @@ func TestNMItemSet(t *testing.T) { t.Errorf("Expected %q ,received: %q", expected, rply) } } + +/* +goos: linux +goarch: amd64 +pkg: github.com/cgrates/cgrates/config +BenchmarkOrderdNavigableMapSet2-16 1738 6463443 ns/op +BenchmarkOrderdNavigableMapSet2-16 1792 6536313 ns/op +BenchmarkOrderdNavigableMapSet2-16 1744 6554331 ns/op +BenchmarkNavigableMapOld1Set-16 2980 3831743 ns/op +BenchmarkNavigableMapOld1Set-16 2758 3789885 ns/op +BenchmarkNavigableMapOld1Set-16 2916 3741273 ns/op +PASS +ok github.com/cgrates/cgrates/config 71.065s +*/ +var generator = rand.New(rand.NewSource(42)) +var gen = generateRandomTemplate(10_000) + +type benchData struct { + path []string + pathItems utils.PathItems + strPath string + data string +} + +func generateRandomPath() (out []string) { + size := generator.Intn(16) + 1 + out = make([]string, size) + for i := 0; i < size; i++ { + out[i] = utils.Sha1(utils.GenUUID()) + } + return +} +func generateRandomTemplate(size int) (out []benchData) { + out = make([]benchData, size) + for i := 0; i < size; i++ { + out[i].path = generateRandomPath() + out[i].data = utils.UUIDSha1Prefix() + out[i].pathItems = utils.NewPathToItem(out[i].path) + out[i].strPath = out[i].pathItems.String() + // out[i].pathItems[len(out[i].pathItems)-1].Index = IntPointer(0) + } + return +} + +func BenchmarkOrderdNavigableMapSet2(b *testing.B) { + nm := utils.NewOrderedNavigableMap() + b.ResetTimer() + for n := 0; n < b.N; n++ { + for _, data := range gen { + if _, err := nm.Set(&utils.FullPath{PathItems: data.pathItems, Path: data.strPath}, utils.NewNMData(data.data)); err != nil { + b.Log(err, data.path) + } + } + } +} + +func BenchmarkNavigableMapOld1Set(b *testing.B) { + nm := NewNavigableMap(nil) + b.ResetTimer() + for n := 0; n < b.N; n++ { + for _, data := range gen { + nm.Set(data.path, data.data, false, true) + } + } +} diff --git a/packages/debian/changelog b/packages/debian/changelog index 4f92ae25a..ab67c851b 100644 --- a/packages/debian/changelog +++ b/packages/debian/changelog @@ -21,6 +21,7 @@ cgrates (0.10.1~dev) UNRELEASED; urgency=medium * [Migrator] Auto discover tenant from key instead of taking it from config * [Templates] Fixed missing "*" for strip and padding strategy * [SessionS] Update subflags for *rals ( *authorize and *initiate ) + * [AgentRequest] Improved NavigableMap -- Alexandru Tripon Wed, 19 Feb 2020 15:22:59 +0200 diff --git a/utils/orderednavigablemap_test.go b/utils/orderednavigablemap_test.go index fcf16725f..9f7838f63 100644 --- a/utils/orderednavigablemap_test.go +++ b/utils/orderednavigablemap_test.go @@ -18,7 +18,6 @@ along with this program. If not, see package utils import ( - "math/rand" "reflect" "testing" ) @@ -748,59 +747,7 @@ func TestOrderedNavigableRemote(t *testing.T) { } } -var generator = rand.New(rand.NewSource(42)) -var gen = generateRandomTemplate(10_000) - -type benchData struct { - path []string - pathItems PathItems - strPath string - data string -} - -func generateRandomPath() (out []string) { - size := generator.Intn(16) + 1 - out = make([]string, size) - for i := 0; i < size; i++ { - out[i] = Sha1(GenUUID()) - } - return -} -func generateRandomTemplate(size int) (out []benchData) { - out = make([]benchData, size) - for i := 0; i < size; i++ { - out[i].path = generateRandomPath() - out[i].data = UUIDSha1Prefix() - out[i].pathItems = NewPathToItem(out[i].path) - out[i].strPath = out[i].pathItems.String() - // out[i].pathItems[len(out[i].pathItems)-1].Index = IntPointer(0) - } - return -} - -func BenchmarkOrderdNavigableMapSet2(b *testing.B) { - nm := NewOrderedNavigableMap() - b.ResetTimer() - for n := 0; n < b.N; n++ { - for _, data := range gen { - if _, err := nm.Set(&FullPath{PathItems: data.pathItems, Path: data.strPath}, NewNMData(data.data)); err != nil { - b.Log(err, data.path) - } - } - } -} - /* -func BenchmarkNavigableMapOld1Set(b *testing.B) { - nm := NewNavigableMapOld1(nil) - b.ResetTimer() - for n := 0; n < b.N; n++ { - for _, data := range gen { - nm.Set(data.path, data.data, false) - } - } -} - func BenchmarkOrderdNavigableMapSet(b *testing.B) { nm := NewOrderedNavigableMap() b.ResetTimer()