Skip to content

v0.2.0

Compare
Choose a tag to compare
@klauspost klauspost released this 18 Jan 10:39
· 33 commits to master since this release
d846a83
Number parsing fix and optimization (#27)

Remove `GOLANG_NUMBER_PARSING` and remove the imprecise parsing and fix up the actual number parsing in Go.

By default, everything that looked like a number would be accepted and a lot of errors were not caught.

Uints will now actually be used if numbers are above maximum int64 and below uint64 with no float point markers.

Even with all the additional checks we are still faster:

```
λ benchcmp before.txt after.txt
benchmark                               old ns/op     new ns/op     delta
BenchmarkParseNumber/Pos/63bit-32       91.9          75.9          -17.41%
BenchmarkParseNumber/Neg/63bit-32       106           77.2          -27.17%
BenchmarkParseNumberFloat-32            190           72.5          -61.84%
BenchmarkParseNumberFloatExp-32         212           98.6          -53.49%
BenchmarkParseNumberBig-32              401           175           -56.36%
BenchmarkParseNumberRandomBits-32       420           230           -45.24%
BenchmarkParseNumberRandomFloats-32     305           172           -43.61%
```
... and full benchmarks:
```
benchmark                                             old ns/op      new ns/op      delta
BenchmarkApache_builds-32                             137091         139556         +1.80%
BenchmarkCanada-32                                    30705862       19000003       -38.12%
BenchmarkCitm_catalog-32                              1921474        2093471        +8.95%
BenchmarkGithub_events-32                             77611          77873          +0.34%
BenchmarkGsoc_2018-32                                 1220291        1215097        -0.43%
BenchmarkInstruments-32                               366747         374568         +2.13%
BenchmarkMarine_ik-32                                 27410259       18343775       -33.08%
BenchmarkMesh-32                                      8200018        5896043        -28.10%
BenchmarkMesh_pretty-32                               9793413        6947830        -29.06%
BenchmarkNumbers-32                                   1967319        1213924        -38.30%
BenchmarkRandom-32                                    1072071        1042956        -2.72%
BenchmarkTwitter-32                                   645530         645529         -0.00%
BenchmarkTwitterescaped-32                            1014456        1022548        +0.80%
```