16.02.2022 10:35, Mark Rotteveel wrote:
On 2022-02-15 20:08, Vlad Khorsun wrote:
15.02.2022 20:32, Mark Rotteveel wrote:
On 2022-02-15 16:20, Vlad Khorsun wrote:
  I'd vote to remove idx_numeric2 in favour of idx_decimal and look
how to improve
Decimal128::makeIndexKey() performance. For example, it stores every 3 decimal
digits into 10 bits using relatively complex (computationally) algorithm with
shifts and multiplications. Storing every digit in 4 bits will use 2 bits per 3
digits more but should save come CPU circles, I believe.

But that is the storage format of Decimal128 (DECFLOAT(34)).

  No. It looks more like packed BCD. DECFLOAT uses a more complex internals,
it is not BCD inside.

Decimal128 uses densely packed BCD (with some oddities to encode sign, exponent 
and first digit).

  It is not BCD and definitely not what uses Decimal128::makeIndexKey().
See http://speleotrove.com/decimal/dbspec.html
and http://speleotrove.com/decimal/DPDecimal.html

Also, note, Decimal encodings is not directly sortable.

Regards,
Vlad


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to