mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 09:17:20 +00:00
29380ff77d
All commands / use cases that heavily rely on double to a string representation conversion, (e.g. meaning take a double-precision floating-point number like 1.5 and return a string like "1.5" ), could benefit from a performance boost by swapping snprintf(buf,len,"%.17g",value) by the equivalent [fpconv_dtoa](https://github.com/night-shift/fpconv) or any other algorithm that ensures 100% coverage of conversion. This is a well-studied topic and Projects like MongoDB. RedPanda, PyTorch leverage libraries ( fmtlib ) that use the optimized double to string conversion underneath. The positive impact can be substantial. This PR uses the grisu2 approach ( grisu explained on https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf section 5 ). test suite changes: Despite being compatible, in some cases it produces a different result from printf, and some tests had to be adjusted. one case is that `%.17g` (which means %e or %f which ever is shorter), chose to use `5000000000` instead of 5e+9, which sounds like a bug? In other cases, we changed TCL to compare numbers instead of strings to ignore minor rounding issues (`expr 0.8 == 0.79999999999999999`)
44 lines
559 B
Plaintext
44 lines
559 B
Plaintext
.*.swp
|
|
*.o
|
|
*.xo
|
|
*.so
|
|
*.d
|
|
*.log
|
|
dump.rdb
|
|
redis-benchmark
|
|
redis-check-aof
|
|
redis-check-rdb
|
|
redis-check-dump
|
|
redis-cli
|
|
redis-sentinel
|
|
redis-server
|
|
doc-tools
|
|
release
|
|
misc/*
|
|
src/release.h
|
|
appendonly.aof*
|
|
appendonlydir
|
|
SHORT_TERM_TODO
|
|
release.h
|
|
src/transfer.sh
|
|
src/configs
|
|
redis.ds
|
|
src/redis.conf
|
|
src/nodes.conf
|
|
deps/lua/src/lua
|
|
deps/lua/src/luac
|
|
deps/lua/src/liblua.a
|
|
deps/hdr_histogram/libhdrhistogram.a
|
|
deps/fpconv/libfpconv.a
|
|
tests/tls/*
|
|
.make-*
|
|
.prerequisites
|
|
*.dSYM
|
|
Makefile.dep
|
|
.vscode/*
|
|
.idea/*
|
|
.ccls
|
|
.ccls-cache/*
|
|
compile_commands.json
|
|
redis.code-workspace
|