opcode: optimize IsValid

Map access costs much more than array access.

name       old time/op  new time/op  delta
IsValid-8  17.6ns ± 2%   1.1ns ± 2%  -93.68%  (p=0.008 n=5+5)
This commit is contained in:
Roman Khimov 2021-08-02 21:46:19 +03:00
parent 3c1325035e
commit 2c2ccdca74
2 changed files with 25 additions and 2 deletions

View file

@ -222,8 +222,16 @@ const (
CONVERT Opcode = 0xDB
)
var validCodes [256]bool
func init() {
// We rely on stringer here, it has a map anyway.
for op := range _Opcode_map {
validCodes[int(op)] = true
}
}
// IsValid returns true if the opcode passed is valid (defined in the VM).
func IsValid(op Opcode) bool {
_, ok := _Opcode_map[op] // We rely on stringer here, it has a map anyway.
return ok
return validCodes[int(op)]
}