init the benchmarks
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
commit
fc09efff84
|
@ -0,0 +1,32 @@
|
|||
CC=go
|
||||
FMT=gofmt
|
||||
NAME=cln-rpc-bench
|
||||
BASE_DIR=/script
|
||||
OS=linux
|
||||
ARCH=386
|
||||
ARM=
|
||||
GORPC_COMMIT=4471a927bb9937a45a9ece876c3e00f093727fc3
|
||||
|
||||
default: fmt lint
|
||||
$(CC) build -o $(NAME) cmd/main.go
|
||||
|
||||
fmt:
|
||||
$(CC) fmt ./...
|
||||
|
||||
lint:
|
||||
golangci-lint run
|
||||
|
||||
check:
|
||||
$(CC) run cmd/main.go
|
||||
|
||||
check-dev:
|
||||
richgo test ./... -v
|
||||
|
||||
build:
|
||||
env GOOS=$(OS) GOARCH=$(ARCH) GOARM=$(ARM) $(CC) build -o $(NAME)-$(OS)-$(ARCH) cmd/main.go
|
||||
|
||||
dep:
|
||||
$(CC) get -u all
|
||||
|
||||
force:
|
||||
$(CC) mod vendor
|
Binary file not shown.
|
@ -0,0 +1,84 @@
|
|||
// core lightning RPC benchmarks
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/charmbracelet/log"
|
||||
|
||||
jsonv2 "github.com/LNOpenMetrics/go-lnmetrics.reporter/pkg/json"
|
||||
cln "github.com/vincenzopalazzo/cln4go/client"
|
||||
)
|
||||
|
||||
// runBencmarks - entry point of the benchmarks!
|
||||
func runBenchmarks(benchs map[string]func(*testing.B)) {
|
||||
for name, bench := range benchs {
|
||||
res := testing.Benchmark(bench)
|
||||
log.Infof("----------------- %s -----------------", name)
|
||||
log.Infof("Memory allocations : %d", res.MemAllocs)
|
||||
log.Infof("Number of bytes allocated: %d", res.Bytes)
|
||||
log.Infof("Number of run: %d", res.N)
|
||||
log.Infof("Time taken: %s", res.T)
|
||||
}
|
||||
}
|
||||
|
||||
var rpc *cln.UnixRPC
|
||||
var target []string
|
||||
|
||||
func init() {
|
||||
path := os.Getenv("CLN_UNIX_SOCKET")
|
||||
if path == "" {
|
||||
err := fmt.Errorf("Unix path not exported with the CLN_UNIX_SOCKET env variable")
|
||||
panic(err)
|
||||
}
|
||||
|
||||
rpc, _ = cln.NewUnix(path)
|
||||
rpc.SetEncoder(&jsonv2.FastJSON{})
|
||||
target = []string{
|
||||
"02049b60c296ffead3e7c8b124c5730153403a8314c1116c2d1b43cf9ac0de2d9d",
|
||||
"021e9677478fef6e0ff9a64a83f996c7eb31524dc4b7f8b99543224fad3c557885",
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
bench := map[string]func(*testing.B){
|
||||
"vanilla": plainListNodes,
|
||||
"sql plugin": sqlListNodes,
|
||||
"paginator": paginatorListNodes,
|
||||
}
|
||||
runBenchmarks(bench)
|
||||
}
|
||||
|
||||
// plain call to list nodes
|
||||
func plainListNodes(b *testing.B) {
|
||||
for _, id := range target {
|
||||
_, err := rpc.Call("listnodes", map[string]any{"id": id})
|
||||
if err != nil {
|
||||
log.Error("%s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func sqlListNodes(b *testing.B) {
|
||||
query := fmt.Sprintf("SELECT * FROM nodes WHERE nodeid = '%s' OR nodeid = '%s'", target[0], target[1])
|
||||
listnodes, err := rpc.Call("sql", map[string]any{
|
||||
"query": query,
|
||||
})
|
||||
if err != nil {
|
||||
log.Error("%s", err)
|
||||
}
|
||||
log.Debug(listnodes)
|
||||
}
|
||||
|
||||
func paginatorListNodes(b *testing.B) {
|
||||
_, err := rpc.Call("listnodes", map[string]any{
|
||||
"paginator": map[string]any{
|
||||
"batch": target,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
log.Error("%s", err)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
module git.hedwing.dev/vincenzopalazzo/cln-rpc-benchmarks
|
||||
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
github.com/LNOpenMetrics/go-lnmetrics.reporter v0.0.6-rc2.0.20230218083049-db6e98c64f5e
|
||||
github.com/charmbracelet/log v0.2.1
|
||||
github.com/vincenzopalazzo/cln4go/client v0.0.0-20230131113223-c518122c3f70
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/charmbracelet/lipgloss v0.7.1 // indirect
|
||||
github.com/go-logfmt/logfmt v0.6.0 // indirect
|
||||
github.com/goccy/go-json v0.10.2 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||
github.com/mattn/go-isatty v0.0.18 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.14 // indirect
|
||||
github.com/muesli/reflow v0.3.0 // indirect
|
||||
github.com/muesli/termenv v0.15.1 // indirect
|
||||
github.com/rivo/uniseg v0.4.4 // indirect
|
||||
github.com/vincenzopalazzo/cln4go/comm v0.0.0-20230131113223-c518122c3f70 // indirect
|
||||
github.com/vincenzopalazzo/cpstl/go v0.0.0-20221204131531-d0659db4dd2a // indirect
|
||||
golang.org/x/sys v0.6.0 // indirect
|
||||
)
|
|
@ -0,0 +1,35 @@
|
|||
github.com/LNOpenMetrics/go-lnmetrics.reporter v0.0.6-rc2.0.20230218083049-db6e98c64f5e h1:5DqUItuc8VgGlBjGKKoL2ZBc+Kh2Zp8haQZDm1v8OTw=
|
||||
github.com/LNOpenMetrics/go-lnmetrics.reporter v0.0.6-rc2.0.20230218083049-db6e98c64f5e/go.mod h1:tSoMLZoC3wy68qomKZz8yGujtpB2kyEhdnEE7/wkGVw=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
||||
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
|
||||
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
|
||||
github.com/charmbracelet/log v0.2.1 h1:1z7jpkk4yKyjwlmKmKMM5qnEDSpV32E7XtWhuv0mTZE=
|
||||
github.com/charmbracelet/log v0.2.1/go.mod h1:GwFfjewhcVDWLrpAbY5A0Hin9YOlEn40eWT4PNaxFT4=
|
||||
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
|
||||
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
|
||||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
|
||||
github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
|
||||
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
|
||||
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
|
||||
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
|
||||
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
||||
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||
github.com/vincenzopalazzo/cln4go/client v0.0.0-20230131113223-c518122c3f70 h1:7NJ3bck59/rXg/MBfOth4R5hqabYzsoimXl/T64H0/A=
|
||||
github.com/vincenzopalazzo/cln4go/client v0.0.0-20230131113223-c518122c3f70/go.mod h1:7C64iH2eVEE7WkIMQa8fmtQmFNzprDt6rIZOxG57Thg=
|
||||
github.com/vincenzopalazzo/cln4go/comm v0.0.0-20230131113223-c518122c3f70 h1:kSqns8J4CJnGq9PrXRr//c25cTkL+8J+GekhcRYxGyg=
|
||||
github.com/vincenzopalazzo/cln4go/comm v0.0.0-20230131113223-c518122c3f70/go.mod h1:zyOWcz5aSHCsLuZLaVBTjbRnxlf5Ac+Rfhu5Ciuyy2c=
|
||||
github.com/vincenzopalazzo/cpstl/go v0.0.0-20221204131531-d0659db4dd2a h1:eh427yzx/JbkOuLjSS2bPop/14HMq7eYGWC1bp29mzU=
|
||||
github.com/vincenzopalazzo/cpstl/go v0.0.0-20221204131531-d0659db4dd2a/go.mod h1:VNETfpfs0pZQKEg9qwSm7M1gfVrliFFzxKVVppNaxbM=
|
||||
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
Loading…
Reference in New Issue