thinkeridea / go-extend

go语言扩展包,收集一些常用的操作函数,辅助更快的完成开发工作,并减少重复代码
https://pkg.go.dev/github.com/thinkeridea/go-extend
MIT License
1.34k stars 160 forks source link

Update: UnsafeToBytes #11

Closed awesee closed 4 years ago

awesee commented 4 years ago

More faster

$ go test -count=50 -bench=BenchmarkUnsafeToBytes > old.txt
$ go test -count=50 -bench=BenchmarkUnsafeToBytes > new.txt

$ benchcmp old.txt new.txt           
benchmark                    old ns/op     new ns/op     delta
BenchmarkUnsafeToBytes-4     0.50          0.38          -22.78%
BenchmarkUnsafeToBytes-4     0.36          0.35          -2.77%
BenchmarkUnsafeToBytes-4     0.55          0.35          -35.75%
BenchmarkUnsafeToBytes-4     0.37          0.36          -4.03%
BenchmarkUnsafeToBytes-4     0.33          0.35          +4.50%
BenchmarkUnsafeToBytes-4     0.36          0.35          -2.79%
BenchmarkUnsafeToBytes-4     0.33          0.33          +0.60%
BenchmarkUnsafeToBytes-4     0.35          0.33          -5.17%
BenchmarkUnsafeToBytes-4     0.35          0.34          -4.51%
BenchmarkUnsafeToBytes-4     0.36          0.33          -8.94%
BenchmarkUnsafeToBytes-4     0.38          0.33          -13.09%
BenchmarkUnsafeToBytes-4     0.36          0.34          -5.28%
BenchmarkUnsafeToBytes-4     0.37          0.35          -5.08%
BenchmarkUnsafeToBytes-4     0.37          0.43          +14.75%
BenchmarkUnsafeToBytes-4     0.35          0.35          +0.29%
BenchmarkUnsafeToBytes-4     0.35          0.37          +7.23%
BenchmarkUnsafeToBytes-4     0.39          0.36          -7.24%
BenchmarkUnsafeToBytes-4     0.36          0.36          -0.28%
BenchmarkUnsafeToBytes-4     0.35          0.35          +0.57%
BenchmarkUnsafeToBytes-4     0.35          0.34          -3.97%
BenchmarkUnsafeToBytes-4     0.34          0.34          -0.29%
BenchmarkUnsafeToBytes-4     0.33          0.35          +6.01%
BenchmarkUnsafeToBytes-4     0.39          0.34          -14.10%
BenchmarkUnsafeToBytes-4     0.55          0.34          -38.84%
BenchmarkUnsafeToBytes-4     0.41          0.34          -17.23%
BenchmarkUnsafeToBytes-4     0.38          0.36          -2.67%
BenchmarkUnsafeToBytes-4     0.37          0.38          +2.71%
BenchmarkUnsafeToBytes-4     0.37          0.34          -7.65%
BenchmarkUnsafeToBytes-4     0.42          0.34          -18.25%
BenchmarkUnsafeToBytes-4     0.37          0.37          -1.88%
BenchmarkUnsafeToBytes-4     0.37          0.36          -2.73%
BenchmarkUnsafeToBytes-4     0.41          0.35          -14.56%
BenchmarkUnsafeToBytes-4     0.35          0.35          +2.31%
BenchmarkUnsafeToBytes-4     0.35          0.36          +1.98%
BenchmarkUnsafeToBytes-4     0.37          0.36          -2.72%
BenchmarkUnsafeToBytes-4     0.39          0.34          -11.11%
BenchmarkUnsafeToBytes-4     0.47          0.35          -26.27%
BenchmarkUnsafeToBytes-4     0.39          0.34          -11.40%
BenchmarkUnsafeToBytes-4     0.43          0.36          -16.47%
BenchmarkUnsafeToBytes-4     0.36          0.34          -5.22%
BenchmarkUnsafeToBytes-4     0.36          0.37          +0.82%
BenchmarkUnsafeToBytes-4     0.39          0.34          -12.73%
BenchmarkUnsafeToBytes-4     0.40          0.36          -9.00%
BenchmarkUnsafeToBytes-4     0.39          0.34          -13.55%
BenchmarkUnsafeToBytes-4     0.36          0.40          +11.36%
BenchmarkUnsafeToBytes-4     0.60          0.36          -40.73%
BenchmarkUnsafeToBytes-4     0.36          0.34          -6.58%
BenchmarkUnsafeToBytes-4     0.38          0.33          -12.37%
BenchmarkUnsafeToBytes-4     0.39          0.33          -13.47%
BenchmarkUnsafeToBytes-4     0.39          0.34          -13.40%
codecov[bot] commented 4 years ago

Codecov Report

Merging #11 into master will not change coverage. The diff coverage is 100%.

Impacted file tree graph

@@           Coverage Diff           @@
##           master      #11   +/-   ##
=======================================
  Coverage   90.79%   90.79%           
=======================================
  Files          17       17           
  Lines         815      815           
=======================================
  Hits          740      740           
  Misses         53       53           
  Partials       22       22
Impacted Files Coverage Δ
exstrings/convert.go 100% <100%> (ø) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 64bce00...acc8668. Read the comment docs.

thinkeridea commented 4 years ago

赞,这非常的棒,我想它不仅更快也会更安全,unsafe 包使用单个语句会避免指针丢失的情况,之前的方案我并没有遇到这个问题,但是理论上它是存在的,新的方案完美解决了这个问题👍