From c98c9ec117300ba15b84d764b8fa7dc2163bbb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:48:55 +0800 Subject: [PATCH] speedup --- decode_amd64.go | 5 ++++- encode_amd64.go | 20 ++++++++++++++++---- uint128be.go | 16 ++++++---------- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/decode_amd64.go b/decode_amd64.go index 4c23ea5..c2b1b67 100644 --- a/decode_amd64.go +++ b/decode_amd64.go @@ -4,5 +4,8 @@ package unibase2n // dec128blk1 for bit 1 -// len(in)>0, len(in)%16==0, len(out)==len(in)/16 +// +// len(in)>0, len(in)%16==0, len(out)==len(in)/16 +// +//go:noescape func dec128blk1(mask uint128be, in, out []byte) diff --git a/encode_amd64.go b/encode_amd64.go index 8555070..b45fafd 100644 --- a/encode_amd64.go +++ b/encode_amd64.go @@ -4,17 +4,29 @@ package unibase2n // enc16blk1 for bit 1 (actual enc128blk1) -// len(in)!=0, len(out)==len(in)*16 +// +// len(in)!=0, len(out)==len(in)*16 +// +//go:noescape func enc16blk1(mask uint16, in, out []byte) // enc64blk2 for bit 2 -// len(in)!=0, len(out)==len(in)*8 +// +// len(in)!=0, len(out)==len(in)*8 +// +//go:noescape func enc64blk2(mask uint64, in, out []byte) // enc32blk4 for bit 4 -// len(in)!=0, len(out)==len(in)*4 +// +// len(in)!=0, len(out)==len(in)*4 +// +//go:noescape func enc32blk4(mask uint32, in, out []byte) // enc16blk8 for bit 8 -// len(in)!=0, len(out)==len(in)*2 +// +// len(in)!=0, len(out)==len(in)*2 +// +//go:noescape func enc16blk8(mask uint16, in, out []byte) diff --git a/uint128be.go b/uint128be.go index 73329b7..1f7d568 100644 --- a/uint128be.go +++ b/uint128be.go @@ -12,11 +12,6 @@ type uint128be struct { b uint64 } -var ( - u128minusone = uint128be{0xffffffff_ffffffff, 0xffffffff_ffffffff} - u128one = uint128be{0, 1} -) - func readuint128be(b []byte) uint128be { if len(b) < 16 { b = append(b, make([]byte, 16-len(b))...) @@ -31,15 +26,15 @@ func (num *uint128be) addeq(n uint128be) { var c uint64 num.b, c = bits.Add64(num.b, n.b, 0) num.a, _ = bits.Add64(num.a, n.a, c) - return } +/* func (num *uint128be) subeq(n uint128be) { var b uint64 num.b, b = bits.Sub64(num.b, n.b, 0) num.a, _ = bits.Sub64(num.a, n.a, b) return -} +}*/ func (num uint128be) sub(n uint128be) (r uint128be) { var b uint64 @@ -64,10 +59,11 @@ func (num *uint128be) shleq(c uint8) { num.a = bout | (num.a << c) } +/* func (num *uint128be) andeq(n uint128be) { num.a &= n.a num.b &= n.b -} +}*/ func (num uint128be) and(n uint128be) (r uint128be) { r.a = num.a & n.a @@ -80,6 +76,7 @@ func (num *uint128be) oreq(n uint128be) { num.b |= n.b } +/* func (num uint128be) or(n uint128be) (r uint128be) { r.a = num.a | n.a r.b = num.b | n.b @@ -90,12 +87,11 @@ func (num uint128be) bswap() (r uint128be) { r.a = bits.ReverseBytes64(num.b) r.b = bits.ReverseBytes64(num.a) return -} +}*/ func (num *uint128be) write(b []byte) { binary.BigEndian.PutUint64(b[:8], num.a) binary.BigEndian.PutUint64(b[8:16], num.b) - return } func (num uint128be) String() string {