Optimise numeric division for 3 and 4 base-NBASE digit divisors

Enterprise / PostgreSQL - Dean Rasheed [gmail.com] - 23 January 2023 11:58 UTC

On platforms with 128-bit integer support, introduce a new function div_var_int64(), along the same lines as div_var_int() added in d1b307eef2 for divisors with 1 or 2 base-NBASE digits, and use it to speed up div_var() and div_var_fast() in a similar way when the divisor has 3 or 4 base-NBASE digits.

This gives significant performance gains for divisors with 9-16 decimal digits.

Joel Jacobson.

Discussion: https://postgr.es/m/b7a5893d-af18-4c0b-8918-96de5f1bbf39%40app.fastmail.com https://postgr.es/m/CAEZATCXGm%3DDyTq%3DFrcOqC0gPMVveKUYTaD5KRRoajrUTiWxVMw%40mail.gmail.com

0aa38db56b Optimise numeric division for 3 and 4 base-NBASE digit divisors.
src/backend/utils/adt/numeric.c | 167 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 167 insertions(+)

Upstream: git.postgresql.org


  • Share