Al-HUWAITI Shell
Al-huwaiti


Server : LiteSpeed
System : Linux in-mum-web1949.main-hosting.eu 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
User : u595547767 ( 595547767)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /opt/go/pkg/mod/github.com/go-openapi/runtime@v0.28.0/middleware/denco/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/go/pkg/mod/github.com/go-openapi/runtime@v0.28.0/middleware/denco/router_bench_test.go
package denco_test

import (
	"bytes"
	"crypto/rand"
	"fmt"
	"math/big"
	"testing"

	"github.com/go-openapi/runtime/middleware/denco"
)

func BenchmarkRouterLookupStatic100(b *testing.B) {
	benchmarkRouterLookupStatic(b, 100)
}

func BenchmarkRouterLookupStatic300(b *testing.B) {
	benchmarkRouterLookupStatic(b, 300)
}

func BenchmarkRouterLookupStatic700(b *testing.B) {
	benchmarkRouterLookupStatic(b, 700)
}

func BenchmarkRouterLookupSingleParam100(b *testing.B) {
	records := makeTestSingleParamRecords(100)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterLookupSingleParam300(b *testing.B) {
	records := makeTestSingleParamRecords(300)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterLookupSingleParam700(b *testing.B) {
	records := makeTestSingleParamRecords(700)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterLookupSingle2Param100(b *testing.B) {
	records := makeTestSingle2ParamRecords(100)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterLookupSingle2Param300(b *testing.B) {
	records := makeTestSingle2ParamRecords(300)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterLookupSingle2Param700(b *testing.B) {
	records := makeTestSingle2ParamRecords(700)
	benchmarkRouterLookupSingleParam(b, records)
}

func BenchmarkRouterBuildStatic100(b *testing.B) {
	records := makeTestStaticRecords(100)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildStatic300(b *testing.B) {
	records := makeTestStaticRecords(300)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildStatic700(b *testing.B) {
	records := makeTestStaticRecords(700)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingleParam100(b *testing.B) {
	records := makeTestSingleParamRecords(100)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingleParam300(b *testing.B) {
	records := makeTestSingleParamRecords(300)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingleParam700(b *testing.B) {
	records := makeTestSingleParamRecords(700)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingle2Param100(b *testing.B) {
	records := makeTestSingle2ParamRecords(100)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingle2Param300(b *testing.B) {
	records := makeTestSingle2ParamRecords(300)
	benchmarkRouterBuild(b, records)
}

func BenchmarkRouterBuildSingle2Param700(b *testing.B) {
	records := makeTestSingle2ParamRecords(700)
	benchmarkRouterBuild(b, records)
}

func benchmarkRouterLookupStatic(b *testing.B, n int) {
	b.StopTimer()
	router := denco.New()
	records := makeTestStaticRecords(n)
	if err := router.Build(records); err != nil {
		b.Fatal(err)
	}
	record := pickTestRecord(records)
	b.StartTimer()
	for i := 0; i < b.N; i++ {
		if r, _, _ := router.Lookup(record.Key); r != record.Value {
			b.Fail()
		}
	}
}

func benchmarkRouterLookupSingleParam(b *testing.B, records []denco.Record) {
	router := denco.New()
	if err := router.Build(records); err != nil {
		b.Fatal(err)
	}
	record := pickTestRecord(records)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		if _, _, found := router.Lookup(record.Key); !found {
			b.Fail()
		}
	}
}

func benchmarkRouterBuild(b *testing.B, records []denco.Record) {
	for i := 0; i < b.N; i++ {
		router := denco.New()
		if err := router.Build(records); err != nil {
			b.Fatal(err)
		}
	}
}

func makeTestStaticRecords(n int) []denco.Record {
	records := make([]denco.Record, n)
	for i := 0; i < n; i++ {
		records[i] = denco.NewRecord("/"+randomString(50), fmt.Sprintf("testroute%d", i))
	}
	return records
}

func makeTestSingleParamRecords(n int) []denco.Record {
	records := make([]denco.Record, n)
	for i := 0; i < len(records); i++ {
		records[i] = denco.NewRecord(fmt.Sprintf("/user%d/:name", i), fmt.Sprintf("testroute%d", i))
	}
	return records
}

func makeTestSingle2ParamRecords(n int) []denco.Record {
	records := make([]denco.Record, n)
	for i := 0; i < len(records); i++ {
		records[i] = denco.NewRecord(fmt.Sprintf("/user%d/:name/comment/:id", i), fmt.Sprintf("testroute%d", i))
	}
	return records
}

func pickTestRecord(records []denco.Record) denco.Record {
	return records[len(records)/2]
}

func randomString(n int) string {
	const srcStrings = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/"
	var buf bytes.Buffer
	for i := 0; i < n; i++ {
		num, err := rand.Int(rand.Reader, big.NewInt(int64(len(srcStrings)-1)))
		if err != nil {
			panic(err)
		}
		buf.WriteByte(srcStrings[num.Int64()])
	}
	return buf.String()
}

Al-HUWAITI Shell