• Felix Lange's avatar
    build: use golangci-lint (#20295) · 68948644
    Felix Lange authored
    * build: use golangci-lint
    
    This changes build/ci.go to download and run golangci-lint instead
    of gometalinter.
    
    * core/state: fix unnecessary conversion
    
    * p2p/simulations: fix lock copying (found by go vet)
    
    * signer/core: fix unnecessary conversions
    
    * crypto/ecies: remove unused function cmpPublic
    
    * core/rawdb: remove unused function print
    
    * core/state: remove unused function xTestFuzzCutter
    
    * core/vm: disable TestWriteExpectedValues in a different way
    
    * core/forkid: remove unused function checksum
    
    * les: remove unused type proofsData
    
    * cmd/utils: remove unused functions prefixedNames, prefixFor
    
    * crypto/bn256: run goimports
    
    * p2p/nat: fix goimports lint issue
    
    * cmd/clef: avoid using unkeyed struct fields
    
    * les: cancel context in testRequest
    
    * rlp: delete unreachable code
    
    * core: gofmt
    
    * internal/build: simplify DownloadFile for Go 1.11 compatibility
    
    * build: remove go test --short flag
    
    * .travis.yml: disable build cache
    
    * whisper/whisperv6: fix ineffectual assignment in TestWhisperIdentityManagement
    
    * .golangci.yml: enable goconst and ineffassign linters
    
    * build: print message when there are no lint issues
    
    * internal/build: refactor download a bit
    68948644
state_object_test.go 1.34 KB
// Copyright 2019 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package state

import (
	"bytes"
	"testing"

	"github.com/ethereum/go-ethereum/common"
)

func BenchmarkCutOriginal(b *testing.B) {
	value := common.HexToHash("0x01")
	for i := 0; i < b.N; i++ {
		bytes.TrimLeft(value[:], "\x00")
	}
}

func BenchmarkCutsetterFn(b *testing.B) {
	value := common.HexToHash("0x01")
	cutSetFn := func(r rune) bool { return r == 0 }
	for i := 0; i < b.N; i++ {
		bytes.TrimLeftFunc(value[:], cutSetFn)
	}
}

func BenchmarkCutCustomTrim(b *testing.B) {
	value := common.HexToHash("0x01")
	for i := 0; i < b.N; i++ {
		common.TrimLeftZeroes(value[:])
	}
}