mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Hand code string to integer conversion for performance.
As benchmarks show, using libc's string-to-integer conversion is pretty slow. At least part of the reason for that is that strtol[l] have to be more generic than what largely is required inside pg. This patch considerably speeds up int2/int4 input (int8 already was already using hand-rolled code). Most of the existing pg_atoi callers have been converted. But as one requires pg_atoi's custom delimiter functionality, and as it seems likely that there's external pg_atoi users, it seems sensible to just keep pg_atoi around. Author: Andres Freund Reviewed-By: Robert Haas Discussion: https://postgr.es/m/20171208214437.qgn6zdltyq5hmjpk@alap3.anarazel.de
This commit is contained in:
@ -2460,13 +2460,13 @@ prsd_headline(PG_FUNCTION_ARGS)
|
||||
char *val = defGetString(defel);
|
||||
|
||||
if (pg_strcasecmp(defel->defname, "MaxWords") == 0)
|
||||
max_words = pg_atoi(val, sizeof(int32), 0);
|
||||
max_words = pg_strtoint32(val);
|
||||
else if (pg_strcasecmp(defel->defname, "MinWords") == 0)
|
||||
min_words = pg_atoi(val, sizeof(int32), 0);
|
||||
min_words = pg_strtoint32(val);
|
||||
else if (pg_strcasecmp(defel->defname, "ShortWord") == 0)
|
||||
shortword = pg_atoi(val, sizeof(int32), 0);
|
||||
shortword = pg_strtoint32(val);
|
||||
else if (pg_strcasecmp(defel->defname, "MaxFragments") == 0)
|
||||
max_fragments = pg_atoi(val, sizeof(int32), 0);
|
||||
max_fragments = pg_strtoint32(val);
|
||||
else if (pg_strcasecmp(defel->defname, "StartSel") == 0)
|
||||
prs->startsel = pstrdup(val);
|
||||
else if (pg_strcasecmp(defel->defname, "StopSel") == 0)
|
||||
|
Reference in New Issue
Block a user