neoneo-go/pkg/vm
Roman Khimov ee05f73b6f vm: simplify slot and make it private
Hiding refcounter inside a slot is actually a good idea, but it makes the
structure somewhat bigger, especially given that the refcounter is the same
and belongs more to VM or Context. New structure is a bit more efficient:

name                    old time/op    new time/op    delta
ScriptFibonacci-8          672µs ± 2%     644µs ± 0%  -4.15%  (p=0.008 n=5+5)
ScriptNestedRefCount-8    1.08ms ± 1%    1.05ms ± 2%  -2.56%  (p=0.008 n=5+5)
ScriptPushPop/4-8         1.52µs ± 1%    1.47µs ± 1%  -3.14%  (p=0.008 n=5+5)
ScriptPushPop/16-8        3.66µs ± 1%    3.54µs ± 1%  -3.24%  (p=0.008 n=5+5)
ScriptPushPop/128-8       24.7µs ± 1%    23.2µs ± 1%  -6.14%  (p=0.008 n=5+5)
ScriptPushPop/1024-8       183µs ± 1%     173µs ± 1%  -5.01%  (p=0.008 n=5+5)

name                    old alloc/op   new alloc/op   delta
ScriptFibonacci-8          114kB ± 0%     114kB ± 0%    ~     (p=0.079 n=4+5)
ScriptNestedRefCount-8     241kB ± 0%     241kB ± 0%    ~     (p=0.333 n=5+4)
ScriptPushPop/4-8           160B ± 0%      160B ± 0%    ~     (all equal)
ScriptPushPop/16-8          640B ± 0%      640B ± 0%    ~     (all equal)
ScriptPushPop/128-8       8.70kB ± 0%    8.70kB ± 0%    ~     (all equal)
ScriptPushPop/1024-8      73.2kB ± 0%    73.2kB ± 0%    ~     (all equal)

name                    old allocs/op  new allocs/op  delta
ScriptFibonacci-8          3.17k ± 0%     3.17k ± 0%  -0.03%  (p=0.008 n=5+5)
ScriptNestedRefCount-8     10.7k ± 0%     10.7k ± 0%    ~     (all equal)
ScriptPushPop/4-8           8.00 ± 0%      8.00 ± 0%    ~     (all equal)
ScriptPushPop/16-8          32.0 ± 0%      32.0 ± 0%    ~     (all equal)
ScriptPushPop/128-8          259 ± 0%       259 ± 0%    ~     (all equal)
ScriptPushPop/1024-8       2.05k ± 0%     2.05k ± 0%    ~     (all equal)

It'd be especially nice to internalize static slot, but as we can't compare
slices it's not possible.
2021-12-01 21:36:25 +03:00
..
cli Merge pull request #2283 from nspcc-dev/fix-vm-tests 2021-12-01 11:35:41 +03:00
emit vm/emit: improve error message 2021-07-22 14:23:32 +03:00
opcode vm: add PACKMAP/PACKSTRUCT, extend UNPACK 2021-11-12 17:19:59 +03:00
stackitem stackitem: avoid going through Value() in serialization 2021-08-23 18:29:07 +03:00
testdata vm: add PACKMAP/PACKSTRUCT, extend UNPACK 2021-11-12 17:19:59 +03:00
bench_test.go vm: rework stack as a simple slice 2021-08-24 15:28:14 +03:00
context.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
contract_checks.go stackitem: completely drop MaxArraySize 2021-07-19 15:42:42 +03:00
contract_checks_test.go core: refactor Neo.Crypto.CheckMultisigWithECDsaSecpr1 2021-03-10 21:46:05 +03:00
debug_test.go vm: rework stack as a simple slice 2021-08-24 15:28:14 +03:00
exception.go stackitem: change Bool() to TryBool(), prepare for its failures 2020-08-21 20:55:20 +03:00
interop.go interop: remove System.Iterator.Create, fix #1935 2021-05-11 12:13:30 +03:00
invocation_tree.go rpc: add verbose parameter to invokefunction and invokescript 2021-11-20 21:57:41 +03:00
invocation_tree_test.go vm: add invocation tree tracing 2021-11-20 21:57:41 +03:00
json_test.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
opcodebench_test.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
ref_counter.go vm: embed reference counter in compound items 2021-08-13 14:41:26 +03:00
ref_counter_test.go vm: embed reference counter in compound items 2021-08-13 14:41:26 +03:00
slot.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
slot_test.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
stack.go vm: don't use PushVal when item type is known 2021-08-30 23:43:58 +03:00
stack_test.go vm: rework stack as a simple slice 2021-08-24 15:28:14 +03:00
state.go remove github.com/pkg/errors from dependencies 2020-08-07 12:21:52 +03:00
state_test.go core, vm: store VMState as byte instead of string 2020-07-29 10:14:08 +03:00
vm.go vm: simplify slot and make it private 2021-12-01 21:36:25 +03:00
vm_test.go vm: add PACKMAP/PACKSTRUCT, extend UNPACK 2021-11-12 17:19:59 +03:00