-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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% ```
- Loading branch information
Showing
15 changed files
with
688 additions
and
587 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.