• isharipo's avatar
    math/big: speedup nat.setBytes for bigger slices · d2a5263a
    isharipo authored
    Set up to _S (number of bytes in Uint) bytes at time
    by using BigEndian.Uint32 and BigEndian.Uint64.
    
    The performance improves for slices bigger than _S bytes.
    This is the case for 128/256bit arith that initializes
    it's objects from bytes.
    
    name               old time/op  new time/op  delta
    NatSetBytes/8-4    29.8ns ± 1%  11.4ns ± 0%  -61.63%  (p=0.000 n=9+8)
    NatSetBytes/24-4    109ns ± 1%    56ns ± 0%  -48.75%  (p=0.000 n=9+8)
    NatSetBytes/128-4   420ns ± 2%   110ns ± 1%  -73.83%  (p=0.000 n=10+10)
    NatSetBytes/7-4    26.2ns ± 1%  21.3ns ± 2%  -18.63%  (p=0.000 n=8+9)
    NatSetBytes/23-4    106ns ± 1%    67ns ± 1%  -36.93%  (p=0.000 n=9+10)
    NatSetBytes/127-4   410ns ± 2%   121ns ± 0%  -70.46%  (p=0.000 n=9+8)
    
    Found this optimization opportunity by looking at ethereum_corevm
    community benchmark cpuprofile.
    
    name        old time/op  new time/op  delta
    OpDiv256-4   715ns ± 1%   596ns ± 1%  -16.57%  (p=0.008 n=5+5)
    OpDiv128-4   373ns ± 1%   314ns ± 1%  -15.83%  (p=0.008 n=5+5)
    OpDiv64-4    301ns ± 0%   285ns ± 1%   -5.12%  (p=0.008 n=5+5)
    
    Change-Id: I8e5a680ae6284c8233d8d7431d51253a8a740b57
    Reviewed-on: https://go-review.googlesource.com/98775
    Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
    Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    d2a5263a
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...