mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-26 05:27:19 +00:00
less allocs at call trace (#2363)
This commit is contained in:
parent
29695bc91d
commit
356567676a
@ -121,7 +121,7 @@ func promoteCallTraces(logPrefix string, tx ethdb.RwTx, startBlock, endBlock uin
|
|||||||
if len(v) != common.AddressLength+1 {
|
if len(v) != common.AddressLength+1 {
|
||||||
return fmt.Errorf("%s: wrong size of value in CallTraceSet: %x (size %d)", logPrefix, v, len(v))
|
return fmt.Errorf("%s: wrong size of value in CallTraceSet: %x (size %d)", logPrefix, v, len(v))
|
||||||
}
|
}
|
||||||
mapKey := string(common.CopyBytes(v[:common.AddressLength]))
|
mapKey := string(v[:common.AddressLength])
|
||||||
if v[common.AddressLength]&1 > 0 {
|
if v[common.AddressLength]&1 > 0 {
|
||||||
m, ok := froms[mapKey]
|
m, ok := froms[mapKey]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -220,8 +220,11 @@ func finaliseCallTraces(collectorFrom, collectorTo *etl.Collector, logPrefix str
|
|||||||
var currentBitmap = roaring64.New()
|
var currentBitmap = roaring64.New()
|
||||||
var buf = bytes.NewBuffer(nil)
|
var buf = bytes.NewBuffer(nil)
|
||||||
lastChunkKey := make([]byte, 128)
|
lastChunkKey := make([]byte, 128)
|
||||||
|
reader := bytes.NewReader(nil)
|
||||||
|
reader2 := bytes.NewReader(nil)
|
||||||
var loaderFunc = func(k []byte, v []byte, table etl.CurrentTableReader, next etl.LoadNextFunc) error {
|
var loaderFunc = func(k []byte, v []byte, table etl.CurrentTableReader, next etl.LoadNextFunc) error {
|
||||||
if _, err := currentBitmap.ReadFrom(bytes.NewReader(v)); err != nil {
|
reader.Reset(v)
|
||||||
|
if _, err := currentBitmap.ReadFrom(reader); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
lastChunkKey = lastChunkKey[:len(k)+8]
|
lastChunkKey = lastChunkKey[:len(k)+8]
|
||||||
@ -234,7 +237,8 @@ func finaliseCallTraces(collectorFrom, collectorTo *etl.Collector, logPrefix str
|
|||||||
|
|
||||||
if len(lastChunkBytes) > 0 {
|
if len(lastChunkBytes) > 0 {
|
||||||
lastChunk := roaring64.New()
|
lastChunk := roaring64.New()
|
||||||
_, err = lastChunk.ReadFrom(bytes.NewReader(lastChunkBytes))
|
reader2.Reset(lastChunkBytes)
|
||||||
|
_, err = lastChunk.ReadFrom(reader2)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("couldn't read last log index chunk: %w, len(lastChunkBytes)=%d", err, len(lastChunkBytes))
|
return fmt.Errorf("couldn't read last log index chunk: %w, len(lastChunkBytes)=%d", err, len(lastChunkBytes))
|
||||||
}
|
}
|
||||||
@ -315,7 +319,7 @@ func unwindCallTraces(logPrefix string, db ethdb.RwTx, from, to uint64, quitCh <
|
|||||||
if len(v) != common.AddressLength+1 {
|
if len(v) != common.AddressLength+1 {
|
||||||
return fmt.Errorf("%s: wrong size of value in CallTraceSet: %x (size %d)", logPrefix, v, len(v))
|
return fmt.Errorf("%s: wrong size of value in CallTraceSet: %x (size %d)", logPrefix, v, len(v))
|
||||||
}
|
}
|
||||||
mapKey := string(common.CopyBytes(v[:common.AddressLength]))
|
mapKey := string(v[:common.AddressLength])
|
||||||
if v[common.AddressLength]&1 > 0 {
|
if v[common.AddressLength]&1 > 0 {
|
||||||
froms[mapKey] = struct{}{}
|
froms[mapKey] = struct{}{}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user