yuchanns opened a new pull request, #4893:
URL: https://github.com/apache/opendal/pull/4893

   Part of https://github.com/apache/opendal/issues/4892. Add a benchmark.
   
   Here is a benchmark between new and old implementations with the same 
benchmark read and write behavior in backend memory:
   
   **purego+libffi** (as `new.txt`)
   ```
   goos: linux
   goarch: arm64
   pkg: github.com/apache/opendal/bindings/go
   BenchmarkWrite4KiB-10            1000000              2844 ns/op
   BenchmarkWrite256KiB-10           163346             10092 ns/op
   BenchmarkWrite4MiB-10              12900             99161 ns/op
   BenchmarkWrite16MiB-10              1785            658210 ns/op
   BenchmarkRead4KiB-10              194529              6387 ns/op
   BenchmarkRead256KiB-10             14228             82704 ns/op
   BenchmarkRead4MiB-10                 981           1227872 ns/op
   BenchmarkRead16MiB-10                328           3617185 ns/op
   PASS
   ok
   ```
   
   **CGO** (as `old.txt`)
   ```
   go test -bench=. -tags dynamic .
   goos: linux
   goarch: arm64
   pkg: opendal.apache.org/go
   BenchmarkWrite4KiB-10             241981              4240 ns/op
   BenchmarkWrite256KiB-10           126464             10105 ns/op
   BenchmarkWrite4MiB-10              13443             89578 ns/op
   BenchmarkWrite16MiB-10              1737            646155 ns/op
   BenchmarkRead4KiB-10               53535             20939 ns/op
   BenchmarkRead256KiB-10              9008            132738 ns/op
   BenchmarkRead4MiB-10                 576           1846683 ns/op
   BenchmarkRead16MiB-10                230           6305322 ns/op
   PASS
   ok
   ```
   Diff with [benchstat](https://pkg.go.dev/golang.org/x/perf/cmd/benchstat)
   ```
   benchstat old.txt new.txt
   goos: linux
   goarch: arm64
   pkg: github.com/apache/opendal/bindings/go
                  │   new.txt    │
                  │    sec/op    │
   Write4KiB-10     2.844µ ± ∞ ¹
   Write256KiB-10   10.09µ ± ∞ ¹
   Write4MiB-10     99.16µ ± ∞ ¹
   Write16MiB-10    658.2µ ± ∞ ¹
   Read4KiB-10      6.387µ ± ∞ ¹
   Read256KiB-10    82.70µ ± ∞ ¹
   Read4MiB-10      1.228m ± ∞ ¹
   Read16MiB-10     3.617m ± ∞ ¹
   geomean          90.23µ
   ¹ need >= 6 samples for confidence interval at level 0.95
   
   pkg: opendal.apache.org/go
                  │   old.txt    │
                  │    sec/op    │
   Write4KiB-10     4.240µ ± ∞ ¹
   Write256KiB-10   10.11µ ± ∞ ¹
   Write4MiB-10     89.58µ ± ∞ ¹
   Write16MiB-10    646.2µ ± ∞ ¹
   Read4KiB-10      20.94µ ± ∞ ¹
   Read256KiB-10    132.7µ ± ∞ ¹
   Read4MiB-10      1.847m ± ∞ ¹
   Read16MiB-10     6.305m ± ∞ ¹
   geomean          129.7µ
   ¹ need >= 6 samples for confidence interval at level 0.95
   ```
   
   What a surprise!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to