go-extend

module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2019 License: GPL-3.0

README

GoDoc Build Status codecov Go Report Card

go-extend 收集一些常用的操作函数,辅助更快的完成开发工作,并减少重复代码。

它收集各种杂项函数,并进行归类,方便使用者查找,它可以大幅度提升开发效率和程序运行性能。它以保证性能为最大前提,提供有效的方法。 针对一些标准库中的函数或者库进行一些修改,使其性能大幅度提升,但它并不用来替换标准库函数,这些函数往往会在一些场景下有效,但有些函数可以用来替换标准库函数,它们保持一致的功能,且相当安全。

一些包或者函数使用示例及分析可以在我的 博客(https://blog.thinkeridea.com) 中找到。

规范:

  • 与标准库包名一致的使用 ex 前缀, 避免与标准库包冲突。
  • 包目录下 doc.go 作为包说明文档。

标准库函数改进列表

用来替换标准库的函数,它们和标准库函数功能保持一致,并拥有更好的性能:

用该改善标准库的函数,它们基本和标准库功能一致,但是它们都拥有更好的性能:

很有用的方法

非常有用的包

  • pool 一个 buffer 的公共缓存池,有一些固定的长度可选,可以有效减少程序使用的 sync.Pool 数量。
  • exatomic 一个浮点数的原子包, 支持 float32float64 类型,鉴于浮点数的精度可能会有些意外,详细查看包文档或浮点数算法。
  • datalog 用于辅助拼接类 csv 格式化数据日志的组件。

标准库函数改进性能测试:

  • exstrings

    • Replace 系列函数测试报告
    goos: darwin
    goarch: amd64
    pkg: github.com/thinkeridea/go-extend/exstrings/benchmark
    BenchmarkReplace-8                  	  500000	      3256 ns/op	     960 B/op	      15 allocs/op
    BenchmarkReplaceToBytes-8           	  500000	      3283 ns/op	    1024 B/op	      16 allocs/op
    BenchmarkUnsafeReplaceToBytes-8     	  500000	      3041 ns/op	     960 B/op	      15 allocs/op
    BenchmarkStandardLibraryReplace-8   	  500000	      3679 ns/op	    1920 B/op	      30 allocs/op
    PASS
    ok  	github.com/thinkeridea/go-extend/exstrings/benchmark	7.769s
    
    • Repeat 性能测试报告
    goos: darwin
    goarch: amd64
    pkg: github.com/thinkeridea/go-extend/exstrings/benchmark
    BenchmarkRepeat-8                  	   50000	     28818 ns/op	  303104 B/op	       1 allocs/op
    BenchmarkRepeatToBytes-8           	   50000	     28104 ns/op	  303104 B/op	       1 allocs/op
    BenchmarkStandardLibraryRepeat-8   	   20000	     51968 ns/op	  606208 B/op	       2 allocs/op
    PASS
    ok  	github.com/thinkeridea/go-extend/exstrings/benchmark	6.200s
    
    • Join 性能测试报告
    goos: darwin
    goarch: amd64
    pkg: github.com/thinkeridea/go-extend/exstrings/benchmark
    BenchmarkJoin-8                  	 5000000	       290 ns/op	      64 B/op	       1 allocs/op
    BenchmarkJoinToBytes-8           	 5000000	       290 ns/op	      64 B/op	       1 allocs/op
    BenchmarkStandardLibraryJoin-8   	 5000000	       315 ns/op	     128 B/op	       2 allocs/op
    PASS
    ok  	github.com/thinkeridea/go-extend/exstrings/benchmark	5.406s
    

许可

go-extend 根据 GNU General Public License v3.0 许可证授权,有关完整许可证文本,请参阅 LICENSE

Directories

Path Synopsis
Package datalog 用于辅助拼接类 csv 格式化数据日志的组件。
Package datalog 用于辅助拼接类 csv 格式化数据日志的组件。
Package exatomic 实现了 float32 与 float64 原子操作, 我在历史项目中实时在线统计一些价格,在多线程时往往非常有用, 简化程序逻辑,并提升程序性能。
Package exatomic 实现了 float32 与 float64 原子操作, 我在历史项目中实时在线统计一些价格,在多线程时往往非常有用, 简化程序逻辑,并提升程序性能。
Package exbytes 收集常规的 []byte 操作,作为 go 标准库 bytes 的扩展。
Package exbytes 收集常规的 []byte 操作,作为 go 标准库 bytes 的扩展。
Package exnet 收集一些网络模块函数
Package exnet 收集一些网络模块函数
exhttp/expprof
Package expprof 这是从 net/http/pprof 包复制过来的,做了一些调整 我希望核心的逻辑不变,保持和标准库一致的功能,会调整使用的接口,使之易于控制。
Package expprof 这是从 net/http/pprof 包复制过来的,做了一些调整 我希望核心的逻辑不变,保持和标准库一致的功能,会调整使用的接口,使之易于控制。
Package exstrings 收集常规的 string 操作,作为 go 标准库 strings 的扩展。
Package exstrings 收集常规的 string 操作,作为 go 标准库 strings 的扩展。
Package helper 收集一些可以辅助我们快速编程的方法,让我们极快的编写出自己的应用程序。
Package helper 收集一些可以辅助我们快速编程的方法,让我们极快的编写出自己的应用程序。
Package pool 创建一些常用的 pool, 底层依托 sync.pool 在项目开发中会大量使用 sync.Pool, 有很多 pool 是可以共享的,最常见的就是 bytes.Buffer。
Package pool 创建一些常用的 pool, 底层依托 sync.pool 在项目开发中会大量使用 sync.Pool, 有很多 pool 是可以共享的,最常见的就是 bytes.Buffer。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL