Natural sorting (natsort) in Go
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md Fixed typos / grammar in README Apr 16, 2018
example_test.go
natsort.go Initial version. Apr 15, 2018
natsort_test.go

README.md

natural

Yet another natural sort, with 100% test coverage and a benchmark. It allocates no memory, doesn't depend on package sort and hence doesn't depend on reflect.

GoDoc

Benchmarks

On Go 1.10.1.

On a Xeon:

$ go test -bench=. -benchmem -cpu 1
goos: linux
goarch: amd64
pkg: github.com/maruel/natural
BenchmarkNative                200000000       8.63 ns/op     0 B/op     0 allocs/op
BenchmarkLessStringOnly        100000000       18.7 ns/op     0 B/op     0 allocs/op
BenchmarkLessDigits             50000000       30.5 ns/op     0 B/op     0 allocs/op
BenchmarkLessStringDigits       50000000       31.3 ns/op     0 B/op     0 allocs/op
BenchmarkLessDigitsTwoGroups    20000000       64.4 ns/op     0 B/op     0 allocs/op

On a Raspberry Pi 3:

$ go test -bench=. -benchmem -cpu 1
goos: linux
goarch: arm
pkg: github.com/maruel/natural
BenchmarkNative                 10000000        148 ns/op     0 B/op      0 allocs/op
BenchmarkLessStringOnly          5000000        312 ns/op     0 B/op      0 allocs/op
BenchmarkLessDigits              2000000        656 ns/op     0 B/op      0 allocs/op
BenchmarkLessStringDigits        2000000        679 ns/op     0 B/op      0 allocs/op
BenchmarkLessDigitsTwoGroups     1000000       1480 ns/op     0 B/op      0 allocs/op

Coverage:

$ go test -cover
PASS
coverage: 100.0% of statements
ok     github.com/maruel/natural       0.012s