1
0
mirror of https://github.com/fumiama/go-base16384.git synced 2026-06-05 00:32:52 +08:00

30 Commits

Author SHA1 Message Date
KaranocaVe
313ea7a32c doc: add M4 speedup benchmarks (#1) 2025-10-27 22:50:35 +08:00
源文雨
67a382efd8 doc: update README 2025-10-27 22:29:19 +08:00
源文雨
2840c604c1 fix: encoder/decoder v1.7.1 2025-10-27 22:26:01 +08:00
源文雨
d548cdd86f 优化代码结构 v1.7.0 2023-04-19 15:33:33 +08:00
源文雨
e8419f8b75 优化slice v1.6.4 2022-12-14 10:40:41 +08:00
源文雨
75ee4a090e 优化 amd64 调用与内存
goos: darwin
goarch: amd64
pkg: github.com/fumiama/go-base16384
cpu: Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz

name            old time/op    new time/op    delta
EncodeTo/16-8     16.9ns ± 3%    16.7ns ± 1%    -1.62%  (p=0.048 n=5+5)
EncodeTo/256-8    78.0ns ± 1%    77.6ns ± 0%      ~     (p=0.286 n=5+4)
EncodeTo/4K-8      942ns ± 0%     943ns ± 0%      ~     (p=0.841 n=5+5)
EncodeTo/32K-8    7.59µs ± 1%    7.53µs ± 1%      ~     (p=0.222 n=5+5)
DecodeTo/16-8     43.1ns ± 1%    12.2ns ± 0%   -71.70%  (p=0.008 n=5+5)
DecodeTo/256-8     179ns ± 1%      74ns ± 1%   -58.93%  (p=0.008 n=5+5)
DecodeTo/4K-8     1.67µs ± 1%    0.94µs ± 0%   -43.89%  (p=0.008 n=5+5)
DecodeTo/32K-8    13.2µs ± 0%     7.5µs ± 1%   -43.48%  (p=0.008 n=5+5)
Encoder/16-8       118ns ± 4%     112ns ± 0%    -5.01%  (p=0.008 n=5+5)
Encoder/256-8      350ns ± 0%     341ns ± 0%    -2.48%  (p=0.008 n=5+5)
Encoder/4K-8      3.86µs ± 2%    3.83µs ± 0%      ~     (p=0.238 n=5+5)
Encoder/32K-8     29.6µs ± 0%    29.4µs ± 1%      ~     (p=0.095 n=5+5)
Decoder/16-8       417ns ± 6%     406ns ± 1%      ~     (p=0.056 n=5+5)
Decoder/256-8      471ns ± 1%     467ns ± 1%      ~     (p=0.222 n=5+5)
Decoder/4K-8      1.65µs ± 1%    1.65µs ± 2%      ~     (p=0.500 n=5+5)
Decoder/32K-8     14.3µs ±21%    12.7µs ± 1%      ~     (p=0.151 n=5+5)

name            old speed      new speed      delta
EncodeTo/16-8    946MB/s ± 3%   961MB/s ± 1%      ~     (p=0.056 n=5+5)
EncodeTo/256-8  3.28GB/s ± 1%  3.30GB/s ± 0%      ~     (p=0.286 n=5+4)
EncodeTo/4K-8   4.35GB/s ± 0%  4.34GB/s ± 0%      ~     (p=0.841 n=5+5)
EncodeTo/32K-8  4.32GB/s ± 1%  4.35GB/s ± 1%      ~     (p=0.222 n=5+5)
DecodeTo/16-8    510MB/s ± 1%  1803MB/s ± 0%  +253.37%  (p=0.008 n=5+5)
DecodeTo/256-8  1.65GB/s ± 1%  4.02GB/s ± 1%  +143.45%  (p=0.008 n=5+5)
DecodeTo/4K-8   2.80GB/s ± 1%  4.99GB/s ± 0%   +78.22%  (p=0.008 n=5+5)
DecodeTo/32K-8  2.83GB/s ± 0%  5.00GB/s ± 1%   +76.93%  (p=0.008 n=5+5)
Encoder/16-8     135MB/s ± 4%   142MB/s ± 0%    +5.22%  (p=0.008 n=5+5)
Encoder/256-8    731MB/s ± 0%   750MB/s ± 0%    +2.55%  (p=0.008 n=5+5)
Encoder/4K-8    1.06GB/s ± 2%  1.07GB/s ± 0%      ~     (p=0.310 n=5+5)
Encoder/32K-8   1.11GB/s ± 0%  1.12GB/s ± 1%      ~     (p=0.095 n=5+5)
Decoder/16-8    38.4MB/s ± 6%  39.4MB/s ± 1%      ~     (p=0.056 n=5+5)
Decoder/256-8    544MB/s ± 1%   548MB/s ± 1%      ~     (p=0.222 n=5+5)
Decoder/4K-8    2.49GB/s ± 1%  2.48GB/s ± 2%      ~     (p=0.548 n=5+5)
Decoder/32K-8   2.32GB/s ±18%  2.59GB/s ± 1%      ~     (p=0.151 n=5+5)

name            old alloc/op   new alloc/op   delta
EncodeTo/16-8      0.00B          0.00B           ~     (all equal)
EncodeTo/256-8     0.00B          0.00B           ~     (all equal)
EncodeTo/4K-8      0.00B          0.00B           ~     (all equal)
EncodeTo/32K-8     0.00B          0.00B           ~     (all equal)
DecodeTo/16-8      48.0B ± 0%      0.0B       -100.00%  (p=0.008 n=5+5)
DecodeTo/256-8      576B ± 0%        0B       -100.00%  (p=0.008 n=5+5)
DecodeTo/4K-8     6.14kB ± 0%    0.00kB       -100.00%  (p=0.008 n=5+5)
DecodeTo/32K-8    49.2kB ± 0%     0.0kB       -100.00%  (p=0.008 n=5+5)
Encoder/16-8       24.0B ± 0%     24.0B ± 0%      ~     (all equal)
Encoder/256-8      24.0B ± 0%     24.0B ± 0%      ~     (all equal)
Encoder/4K-8       24.0B ± 0%     24.0B ± 0%      ~     (all equal)
Encoder/32K-8      26.0B ± 0%     26.0B ± 0%      ~     (all equal)
Decoder/16-8      1.39kB ± 0%    1.39kB ± 0%      ~     (all equal)
Decoder/256-8     1.39kB ± 0%    1.39kB ± 0%      ~     (all equal)
Decoder/4K-8      4.98kB ± 0%    4.98kB ± 0%      ~     (all equal)
Decoder/32K-8     41.1kB ± 0%    41.1kB ± 0%      ~     (all equal)

name            old allocs/op  new allocs/op  delta
EncodeTo/16-8       0.00           0.00           ~     (all equal)
EncodeTo/256-8      0.00           0.00           ~     (all equal)
EncodeTo/4K-8       0.00           0.00           ~     (all equal)
EncodeTo/32K-8      0.00           0.00           ~     (all equal)
DecodeTo/16-8       1.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
DecodeTo/256-8      1.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
DecodeTo/4K-8       1.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
DecodeTo/32K-8      1.00 ± 0%      0.00       -100.00%  (p=0.008 n=5+5)
Encoder/16-8        1.00 ± 0%      1.00 ± 0%      ~     (all equal)
Encoder/256-8       1.00 ± 0%      1.00 ± 0%      ~     (all equal)
Encoder/4K-8        1.00 ± 0%      1.00 ± 0%      ~     (all equal)
Encoder/32K-8       1.00 ± 0%      1.00 ± 0%      ~     (all equal)
Decoder/16-8        3.00 ± 0%      3.00 ± 0%      ~     (all equal)
Decoder/256-8       3.00 ± 0%      3.00 ± 0%      ~     (all equal)
Decoder/4K-8        3.00 ± 0%      3.00 ± 0%      ~     (all equal)
Decoder/32K-8       3.00 ± 0%      3.00 ± 0%      ~     (all equal)
v1.6.3
2022-12-14 10:38:19 +08:00
源文雨
cdc9c6322a arm64: 优化流水线和内存分配
goos: darwin
goarch: arm64
pkg: github.com/fumiama/go-base16384

name            old time/op    new time/op    delta
EncodeTo/16-8     10.6ns ± 0%     9.8ns ± 1%   -7.60%  (p=0.008 n=5+5)
EncodeTo/256-8    80.8ns ± 0%    56.0ns ± 0%  -30.72%  (p=0.008 n=5+5)
EncodeTo/4K-8     1.21µs ± 0%    0.82µs ± 1%  -32.34%  (p=0.016 n=4+5)
EncodeTo/32K-8    9.64µs ± 0%    6.52µs ± 1%  -32.36%  (p=0.008 n=5+5)
DecodeTo/16-8     9.79ns ± 0%    6.33ns ± 1%  -35.29%  (p=0.016 n=4+5)
DecodeTo/256-8    80.9ns ± 0%    52.6ns ± 1%  -34.98%  (p=0.008 n=5+5)
DecodeTo/4K-8     1.22µs ± 0%    0.78µs ± 1%  -35.91%  (p=0.008 n=5+5)
DecodeTo/32K-8    9.71µs ± 1%    6.21µs ± 1%  -36.01%  (p=0.008 n=5+5)
Encoder/16-8      76.5ns ± 0%    76.2ns ± 0%   -0.42%  (p=0.008 n=5+5)
Encoder/256-8      356ns ± 0%     290ns ± 0%  -18.39%  (p=0.008 n=5+5)
Encoder/4K-8      4.05µs ± 0%    3.70µs ± 0%   -8.65%  (p=0.008 n=5+5)
Encoder/32K-8     34.1µs ± 0%    29.2µs ± 0%  -14.22%  (p=0.008 n=5+5)
Decoder/16-8       205ns ± 0%     207ns ± 1%   +1.28%  (p=0.008 n=5+5)
Decoder/256-8      262ns ± 0%     246ns ± 1%   -6.05%  (p=0.008 n=5+5)
Decoder/4K-8      1.49µs ± 0%    1.12µs ± 0%  -24.48%  (p=0.008 n=5+5)
Decoder/32K-8     11.0µs ± 0%     8.1µs ± 1%  -26.64%  (p=0.008 n=5+5)

name            old speed      new speed      delta
EncodeTo/16-8   1.50GB/s ± 0%  1.63GB/s ± 1%   +8.22%  (p=0.008 n=5+5)
EncodeTo/256-8  3.17GB/s ± 0%  4.57GB/s ± 0%  +44.35%  (p=0.008 n=5+5)
EncodeTo/4K-8   3.37GB/s ± 0%  4.99GB/s ± 1%  +47.78%  (p=0.008 n=5+5)
EncodeTo/32K-8  3.40GB/s ± 0%  5.02GB/s ± 1%  +47.85%  (p=0.008 n=5+5)
DecodeTo/16-8   2.25GB/s ± 0%  3.47GB/s ± 1%  +54.53%  (p=0.016 n=4+5)
DecodeTo/256-8  3.66GB/s ± 0%  5.63GB/s ± 1%  +53.81%  (p=0.008 n=5+5)
DecodeTo/4K-8   3.84GB/s ± 0%  6.00GB/s ± 1%  +56.05%  (p=0.008 n=5+5)
DecodeTo/32K-8  3.86GB/s ± 1%  6.03GB/s ± 1%  +56.27%  (p=0.008 n=5+5)
Encoder/16-8     209MB/s ± 0%   210MB/s ± 0%   +0.42%  (p=0.008 n=5+5)
Encoder/256-8    720MB/s ± 0%   882MB/s ± 0%  +22.53%  (p=0.008 n=5+5)
Encoder/4K-8    1.01GB/s ± 0%  1.11GB/s ± 0%   +9.47%  (p=0.008 n=5+5)
Encoder/32K-8    962MB/s ± 0%  1121MB/s ± 0%  +16.58%  (p=0.008 n=5+5)
Decoder/16-8    78.1MB/s ± 0%  77.1MB/s ± 1%   -1.25%  (p=0.008 n=5+5)
Decoder/256-8    977MB/s ± 0%  1040MB/s ± 1%   +6.45%  (p=0.008 n=5+5)
Decoder/4K-8    2.76GB/s ± 0%  3.65GB/s ± 0%  +32.39%  (p=0.008 n=5+5)
Decoder/32K-8   2.98GB/s ± 0%  4.06GB/s ± 1%  +36.31%  (p=0.008 n=5+5)

name            old alloc/op   new alloc/op   delta
EncodeTo/16-8      0.00B          0.00B          ~     (all equal)
EncodeTo/256-8     0.00B          0.00B          ~     (all equal)
EncodeTo/4K-8      0.00B          0.00B          ~     (all equal)
EncodeTo/32K-8     0.00B          0.00B          ~     (all equal)
DecodeTo/16-8      0.00B          0.00B          ~     (all equal)
DecodeTo/256-8     0.00B          0.00B          ~     (all equal)
DecodeTo/4K-8      0.00B          0.00B          ~     (all equal)
DecodeTo/32K-8     0.00B          0.00B          ~     (all equal)
Encoder/16-8       24.0B ± 0%     24.0B ± 0%     ~     (all equal)
Encoder/256-8       472B ± 0%       24B ± 0%  -94.92%  (p=0.008 n=5+5)
Encoder/4K-8       24.0B ± 0%     24.0B ± 0%     ~     (all equal)
Encoder/32K-8     41.0kB ± 0%     0.0kB ± 0%  -99.94%  (p=0.008 n=5+5)
Decoder/16-8      1.39kB ± 0%    1.39kB ± 0%     ~     (all equal)
Decoder/256-8     1.39kB ± 0%    1.39kB ± 0%     ~     (all equal)
Decoder/4K-8      4.98kB ± 0%    4.98kB ± 0%     ~     (all equal)
Decoder/32K-8     41.1kB ± 0%    41.1kB ± 0%     ~     (all equal)

name            old allocs/op  new allocs/op  delta
EncodeTo/16-8       0.00           0.00          ~     (all equal)
EncodeTo/256-8      0.00           0.00          ~     (all equal)
EncodeTo/4K-8       0.00           0.00          ~     (all equal)
EncodeTo/32K-8      0.00           0.00          ~     (all equal)
DecodeTo/16-8       0.00           0.00          ~     (all equal)
DecodeTo/256-8      0.00           0.00          ~     (all equal)
DecodeTo/4K-8       0.00           0.00          ~     (all equal)
DecodeTo/32K-8      0.00           0.00          ~     (all equal)
Encoder/16-8        1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Encoder/256-8       2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.008 n=5+5)
Encoder/4K-8        1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Encoder/32K-8       2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.008 n=5+5)
Decoder/16-8        3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/256-8       3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/4K-8        3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/32K-8       3.00 ± 0%      3.00 ± 0%     ~     (all equal)
v1.6.2
2022-12-14 10:07:47 +08:00
源文雨
369cf02def finish arm64 decode
name            old time/op    new time/op     delta
EncodeTo/16-8     10.6ns ± 0%     10.4ns ± 0%    -2.07%  (p=0.008 n=5+5)
EncodeTo/256-8    80.8ns ± 0%     55.7ns ± 0%   -31.11%  (p=0.008 n=5+5)
EncodeTo/4K-8     1.21µs ± 0%     0.82µs ± 0%   -32.67%  (p=0.016 n=4+5)
EncodeTo/32K-8    9.64µs ± 0%     6.47µs ± 0%   -32.90%  (p=0.008 n=5+5)
DecodeTo/16-8     9.79ns ± 0%    26.02ns ± 0%  +165.85%  (p=0.016 n=4+5)
DecodeTo/256-8    80.9ns ± 0%    111.6ns ± 0%   +37.98%  (p=0.008 n=5+5)
DecodeTo/4K-8     1.22µs ± 0%     1.17µs ± 0%    -3.73%  (p=0.008 n=5+5)
DecodeTo/32K-8    9.71µs ± 1%     8.80µs ± 1%    -9.37%  (p=0.008 n=5+5)
Encoder/16-8      76.5ns ± 0%     76.5ns ± 0%      ~     (p=0.810 n=5+5)
Encoder/256-8      356ns ± 0%      291ns ± 0%   -18.22%  (p=0.008 n=5+5)
Encoder/4K-8      4.05µs ± 0%     3.70µs ± 0%    -8.76%  (p=0.008 n=5+5)
Encoder/32K-8     34.1µs ± 0%     29.2µs ± 0%   -14.30%  (p=0.008 n=5+5)
Decoder/16-8       205ns ± 0%      207ns ± 0%    +1.08%  (p=0.008 n=5+5)
Decoder/256-8      262ns ± 0%      244ns ± 1%    -6.94%  (p=0.008 n=5+5)
Decoder/4K-8      1.49µs ± 0%     1.12µs ± 0%   -24.87%  (p=0.008 n=5+5)
Decoder/32K-8     11.0µs ± 0%      8.0µs ± 0%   -27.00%  (p=0.008 n=5+5)

name            old speed      new speed       delta
EncodeTo/16-8   1.50GB/s ± 0%   1.54GB/s ± 0%    +2.11%  (p=0.008 n=5+5)
EncodeTo/256-8  3.17GB/s ± 0%   4.60GB/s ± 0%   +45.15%  (p=0.008 n=5+5)
EncodeTo/4K-8   3.37GB/s ± 0%   5.01GB/s ± 0%   +48.51%  (p=0.008 n=5+5)
EncodeTo/32K-8  3.40GB/s ± 0%   5.06GB/s ± 0%   +49.02%  (p=0.008 n=5+5)
DecodeTo/16-8   2.25GB/s ± 0%   0.85GB/s ± 0%   -62.39%  (p=0.016 n=4+5)
DecodeTo/256-8  3.66GB/s ± 0%   2.65GB/s ± 0%   -27.54%  (p=0.008 n=5+5)
DecodeTo/4K-8   3.84GB/s ± 0%   3.99GB/s ± 0%    +3.87%  (p=0.008 n=5+5)
DecodeTo/32K-8  3.86GB/s ± 1%   4.26GB/s ± 1%   +10.33%  (p=0.008 n=5+5)
Encoder/16-8     209MB/s ± 0%    209MB/s ± 0%      ~     (p=0.802 n=5+5)
Encoder/256-8    720MB/s ± 0%    880MB/s ± 0%   +22.28%  (p=0.008 n=5+5)
Encoder/4K-8    1.01GB/s ± 0%   1.11GB/s ± 0%    +9.60%  (p=0.008 n=5+5)
Encoder/32K-8    962MB/s ± 0%   1122MB/s ± 0%   +16.69%  (p=0.008 n=5+5)
Decoder/16-8    78.1MB/s ± 0%   77.3MB/s ± 0%    -1.08%  (p=0.008 n=5+5)
Decoder/256-8    977MB/s ± 0%   1050MB/s ± 1%    +7.47%  (p=0.008 n=5+5)
Decoder/4K-8    2.76GB/s ± 0%   3.67GB/s ± 0%   +33.10%  (p=0.008 n=5+5)
Decoder/32K-8   2.98GB/s ± 0%   4.08GB/s ± 0%   +36.98%  (p=0.008 n=5+5)

name            old alloc/op   new alloc/op    delta
EncodeTo/16-8      0.00B           0.00B           ~     (all equal)
EncodeTo/256-8     0.00B           0.00B           ~     (all equal)
EncodeTo/4K-8      0.00B           0.00B           ~     (all equal)
EncodeTo/32K-8     0.00B           0.00B           ~     (all equal)
DecodeTo/16-8      0.00B          48.00B ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/256-8     0.00B         576.00B ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/4K-8      0.00B        6144.00B ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/32K-8     0.00B       49152.00B ± 0%     +Inf%  (p=0.008 n=5+5)
Encoder/16-8       24.0B ± 0%      24.0B ± 0%      ~     (all equal)
Encoder/256-8       472B ± 0%        24B ± 0%   -94.92%  (p=0.008 n=5+5)
Encoder/4K-8       24.0B ± 0%      24.0B ± 0%      ~     (all equal)
Encoder/32K-8     41.0kB ± 0%      0.0kB ± 0%   -99.94%  (p=0.008 n=5+5)
Decoder/16-8      1.39kB ± 0%     1.39kB ± 0%      ~     (all equal)
Decoder/256-8     1.39kB ± 0%     1.39kB ± 0%      ~     (all equal)
Decoder/4K-8      4.98kB ± 0%     4.98kB ± 0%      ~     (all equal)
Decoder/32K-8     41.1kB ± 0%     41.1kB ± 0%      ~     (all equal)

name            old allocs/op  new allocs/op   delta
EncodeTo/16-8       0.00            0.00           ~     (all equal)
EncodeTo/256-8      0.00            0.00           ~     (all equal)
EncodeTo/4K-8       0.00            0.00           ~     (all equal)
EncodeTo/32K-8      0.00            0.00           ~     (all equal)
DecodeTo/16-8       0.00            1.00 ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/256-8      0.00            1.00 ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/4K-8       0.00            1.00 ± 0%     +Inf%  (p=0.008 n=5+5)
DecodeTo/32K-8      0.00            1.00 ± 0%     +Inf%  (p=0.008 n=5+5)
Encoder/16-8        1.00 ± 0%       1.00 ± 0%      ~     (all equal)
Encoder/256-8       2.00 ± 0%       1.00 ± 0%   -50.00%  (p=0.008 n=5+5)
Encoder/4K-8        1.00 ± 0%       1.00 ± 0%      ~     (all equal)
Encoder/32K-8       2.00 ± 0%       1.00 ± 0%   -50.00%  (p=0.008 n=5+5)
Decoder/16-8        3.00 ± 0%       3.00 ± 0%      ~     (all equal)
Decoder/256-8       3.00 ± 0%       3.00 ± 0%      ~     (all equal)
Decoder/4K-8        3.00 ± 0%       3.00 ± 0%      ~     (all equal)
Decoder/32K-8       3.00 ± 0%       3.00 ± 0%      ~     (all equal)
2022-12-14 01:14:03 +08:00
源文雨
5e0f486237 finish arm64 encode 2022-12-13 17:08:02 +08:00
源文雨
d47127dc75 优化代码结构 v1.6.1 2022-09-17 20:46:22 +08:00
源文雨
b75d6ab6d8 fix generic panic, add movbe check v1.6.0 2022-09-17 20:38:32 +08:00
fumiama
ceb3054caa fix: amd64 asm read out of range v1.5.5 2022-08-22 13:11:31 +08:00
源文雨
ebe73ccc6c fix: encode panic v1.5.4 2022-07-07 00:08:32 +08:00
源文雨
9db76d108c fix generic decode panic v1.5.3 2022-06-11 22:11:59 +08:00
源文雨
66e99f683d edit README 2022-04-22 21:15:46 +08:00
源文雨
2e6fe912c2 speed up encoder & decoder
name           old time/op    new time/op    delta
Encoder/16-8      136ns ± 2%     102ns ± 1%  -25.00%  (p=0.008 n=5+5)
Encoder/256-8     490ns ± 1%     410ns ± 0%  -16.24%  (p=0.008 n=5+5)
Encoder/4K-8     4.47µs ± 1%    3.52µs ± 1%  -21.10%  (p=0.008 n=5+5)
Encoder/32K-8    38.9µs ± 0%    33.6µs ± 1%  -13.72%  (p=0.008 n=5+5)
Decoder/16-8      269ns ± 1%     253ns ± 1%   -5.95%  (p=0.008 n=5+5)
Decoder/256-8     421ns ± 1%     404ns ± 2%   -4.22%  (p=0.008 n=5+5)
Decoder/4K-8     1.68µs ± 1%    1.66µs ± 3%     ~     (p=0.190 n=5+5)
Decoder/32K-8    12.9µs ± 1%    12.5µs ± 1%   -2.68%  (p=0.008 n=5+5)

name           old speed      new speed      delta
Encoder/16-8    118MB/s ± 2%   157MB/s ± 1%  +33.34%  (p=0.008 n=5+5)
Encoder/256-8   523MB/s ± 1%   624MB/s ± 0%  +19.38%  (p=0.008 n=5+5)
Encoder/4K-8    917MB/s ± 1%  1162MB/s ± 1%  +26.73%  (p=0.008 n=5+5)
Encoder/32K-8   841MB/s ± 0%   975MB/s ± 1%  +15.90%  (p=0.008 n=5+5)
Decoder/16-8   59.5MB/s ± 1%  63.2MB/s ± 1%   +6.34%  (p=0.008 n=5+5)
Decoder/256-8   607MB/s ± 1%   634MB/s ± 2%   +4.42%  (p=0.008 n=5+5)
Decoder/4K-8   2.44GB/s ± 1%  2.46GB/s ± 3%     ~     (p=0.222 n=5+5)
Decoder/32K-8  2.54GB/s ± 1%  2.61GB/s ± 1%   +2.76%  (p=0.008 n=5+5)

name           old alloc/op   new alloc/op   delta
Encoder/16-8      40.0B ± 0%     24.0B ± 0%  -40.00%  (p=0.008 n=5+5)
Encoder/256-8      696B ± 0%      472B ± 0%  -32.18%  (p=0.008 n=5+5)
Encoder/4K-8     4.12kB ± 0%    0.02kB ± 0%  -99.42%  (p=0.008 n=5+5)
Encoder/32K-8    69.7kB ± 0%    41.0kB ± 0%  -41.16%  (p=0.000 n=5+4)
Decoder/16-8       752B ± 0%      752B ± 0%     ~     (all equal)
Decoder/256-8    1.39kB ± 0%    1.39kB ± 0%     ~     (all equal)
Decoder/4K-8     4.98kB ± 0%    4.98kB ± 0%     ~     (all equal)
Decoder/32K-8    41.1kB ± 0%    41.1kB ± 0%     ~     (all equal)

name           old allocs/op  new allocs/op  delta
Encoder/16-8       2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.008 n=5+5)
Encoder/256-8      3.00 ± 0%      2.00 ± 0%  -33.33%  (p=0.008 n=5+5)
Encoder/4K-8       2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.008 n=5+5)
Encoder/32K-8      3.00 ± 0%      2.00 ± 0%  -33.33%  (p=0.008 n=5+5)
Decoder/16-8       3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/256-8      3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/4K-8       3.00 ± 0%      3.00 ± 0%     ~     (all equal)
Decoder/32K-8      3.00 ± 0%      3.00 ± 0%     ~     (all equal)
v1.5.2
2022-04-22 21:05:19 +08:00
源文雨
87b51ceb35 add amd64 asm
name            old time/op    new time/op    delta
EncodeTo/16-8     45.5ns ± 1%    35.9ns ± 1%   -21.01%  (p=0.008 n=5+5)
EncodeTo/256-8     241ns ± 1%     170ns ± 1%   -29.64%  (p=0.008 n=5+5)
EncodeTo/4K-8     2.90µs ± 0%    1.70µs ± 0%   -41.60%  (p=0.008 n=5+5)
EncodeTo/32K-8    23.5µs ± 2%    13.6µs ± 2%   -42.20%  (p=0.008 n=5+5)
DecodeTo/16-8     20.2ns ± 0%    10.3ns ± 2%   -48.92%  (p=0.008 n=5+5)
DecodeTo/256-8     141ns ± 1%      71ns ± 0%   -49.55%  (p=0.008 n=5+5)
DecodeTo/4K-8     2.03µs ± 1%    0.94µs ± 0%   -53.82%  (p=0.008 n=5+5)
DecodeTo/32K-8    16.1µs ± 0%     7.5µs ± 0%   -53.22%  (p=0.008 n=5+5)

name            old speed      new speed      delta
EncodeTo/16-8    352MB/s ± 1%   445MB/s ± 1%   +26.59%  (p=0.008 n=5+5)
EncodeTo/256-8  1.06GB/s ± 1%  1.51GB/s ± 1%   +42.13%  (p=0.008 n=5+5)
EncodeTo/4K-8   1.41GB/s ± 0%  2.42GB/s ± 0%   +71.24%  (p=0.008 n=5+5)
EncodeTo/32K-8  1.40GB/s ± 2%  2.42GB/s ± 2%   +73.01%  (p=0.008 n=5+5)
DecodeTo/16-8   1.09GB/s ± 0%  2.14GB/s ± 2%   +95.84%  (p=0.008 n=5+5)
DecodeTo/256-8  2.10GB/s ± 1%  4.16GB/s ± 0%   +98.21%  (p=0.008 n=5+5)
DecodeTo/4K-8   2.30GB/s ± 1%  4.99GB/s ± 0%  +116.55%  (p=0.008 n=5+5)
DecodeTo/32K-8  2.33GB/s ± 0%  4.98GB/s ± 0%  +113.78%  (p=0.008 n=5+5)
v1.5.1
2022-04-22 17:24:49 +08:00
源文雨
ce47b19c85 add bench mark 2022-04-22 11:12:37 +08:00
源文雨
6885586cff speed up & add more api v1.5.0 2022-04-22 10:32:20 +08:00
源文雨
851f9f8666 new api v1.4.0 2022-03-19 19:34:32 +08:00
源文雨
42e4c3cd4b fix: decode out of range v1.3.1 2022-03-15 17:28:29 +08:00
fumiama
d84411a4ef 适配所有架构 v1.3.0 2022-02-10 13:58:39 +08:00
fumiama
86dc5b5b23 优化 api v1.2.1 2021-10-28 14:05:38 +08:00
fumiama
b764251f95 放弃 cgo v1.2.0 2021-10-28 14:02:36 +08:00
fumiama
e989e44588 增加free说明 2021-08-08 11:21:17 +08:00
fumiama
30ebbb633e Merge branch 'main' of https://github.com/fumiama/go-base16384 into main v1.1.0 2021-08-08 11:19:56 +08:00
fumiama
da16be98e0 add free 2021-08-08 11:19:04 +08:00
源文雨
f8e04400ae Update README.md 2021-08-08 03:45:17 +08:00
fumiama
c4a5495cbd 完成 v1.0.0 2021-08-08 03:43:51 +08:00
源文雨
a6dba6f55f Initial commit 2021-08-08 00:28:17 +08:00