From 5d0d197ce4cf2a48525e7dfc2585a5ddf9f7f09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20Irmak?= Date: Fri, 10 May 2024 14:47:37 +0300 Subject: [PATCH] feat(ccc): reuse a buffer for json encoding (#744) --- params/version.go | 2 +- rollup/circuitcapacitychecker/impl.go | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/params/version.go b/params/version.go index de5d7fc7fc..573edd4186 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ import ( const ( VersionMajor = 5 // Major version component of the current release VersionMinor = 3 // Minor version component of the current release - VersionPatch = 12 // Patch version component of the current release + VersionPatch = 13 // Patch version component of the current release VersionMeta = "mainnet" // Version metadata to append to the version string ) diff --git a/rollup/circuitcapacitychecker/impl.go b/rollup/circuitcapacitychecker/impl.go index d1f463470b..891068db43 100644 --- a/rollup/circuitcapacitychecker/impl.go +++ b/rollup/circuitcapacitychecker/impl.go @@ -10,6 +10,7 @@ package circuitcapacitychecker import "C" //nolint:typecheck import ( + "bytes" "encoding/json" "fmt" "sync" @@ -29,7 +30,8 @@ func init() { type CircuitCapacityChecker struct { // mutex for each CircuitCapacityChecker itself sync.Mutex - ID uint64 + ID uint64 + jsonBuffer bytes.Buffer } // NewCircuitCapacityChecker creates a new CircuitCapacityChecker @@ -65,13 +67,14 @@ func (ccc *CircuitCapacityChecker) ApplyTransaction(traces *types.BlockTrace) (* return nil, ErrUnknown } - tracesByt, err := json.Marshal(traces) + ccc.jsonBuffer.Reset() + err := json.NewEncoder(&ccc.jsonBuffer).Encode(traces) if err != nil { log.Error("fail to json marshal traces in ApplyTransaction", "id", ccc.ID, "TxHash", traces.Transactions[0].TxHash, "err", err) return nil, ErrUnknown } - tracesStr := C.CString(string(tracesByt)) + tracesStr := C.CString(string(ccc.jsonBuffer.Bytes())) defer func() { C.free(unsafe.Pointer(tracesStr)) }() @@ -111,13 +114,14 @@ func (ccc *CircuitCapacityChecker) ApplyBlock(traces *types.BlockTrace) (*types. ccc.Lock() defer ccc.Unlock() - tracesByt, err := json.Marshal(traces) + ccc.jsonBuffer.Reset() + err := json.NewEncoder(&ccc.jsonBuffer).Encode(traces) if err != nil { log.Error("fail to json marshal traces in ApplyBlock", "id", ccc.ID, "blockNumber", traces.Header.Number, "blockHash", traces.Header.Hash(), "err", err) return nil, ErrUnknown } - tracesStr := C.CString(string(tracesByt)) + tracesStr := C.CString(string(ccc.jsonBuffer.Bytes())) defer func() { C.free(unsafe.Pointer(tracesStr)) }()