If a float can be casted to a long long without rounding loss, we can use the integer conversion function to write the score on disk. This is a seriuous speedup

This commit is contained in:
antirez 2010-05-12 15:07:39 +02:00
parent 418807d2d5
commit 8c096b16a1
1 changed files with 4 additions and 1 deletions

View File

@ -3513,7 +3513,10 @@ static int rdbSaveDoubleValue(FILE *fp, double val) {
len = 1;
buf[0] = (val < 0) ? 255 : 254;
} else {
snprintf((char*)buf+1,sizeof(buf)-1,"%.17g",val);
if (val == ((long long)val))
ll2string((char*)buf+1,sizeof(buf),(long long)val);
else
snprintf((char*)buf+1,sizeof(buf)-1,"%.17g",val);
buf[0] = strlen((char*)buf+1);
len = buf[0]+1;
}