在最佳性能上对任意基础执行基本任意精度算术的最佳方法是什么?
我正在考虑切换到二进制,然后使用一些内联汇编,但实际上,我需要以最佳性能的方式来完成它并且我不确定这是最好的方法。
编辑:除了标准的C ++之外,我不想使用任何库。
答案 0 :(得分:2)
问题是,使用多精度数值算法可获得的“最佳”性能在很大程度上取决于您正在使用的数据(例如您可能需要计算的平均数字顺序)。考虑gnu gmp使用的算法选择的讨论作为例子:
https://gmplib.org/manual/Algorithms.html
Gnu GMP代码也在glibc中使用(特别是在精确的浮点转换代码中),所以从某种意义上说它是“标准c”库的一部分。
说到个人经验,要击败GMP的性能数据是非常困难的(实际上,在一般情况下,甚至难以达到GMP性能的2倍),因此如果性能是您可能想要的绝对优先级重新考虑你的设计目标)。多精度计算中的性能并不强烈依赖于实现技术(因此,如果您的数字相当长,那么通过使用汇编而不是像Java这样的东西,你不会赢得任何东西) - 算法的复杂性必然占主导地位。事实上,从最高级别的语言开始并从那里进行优化是有意义的。
为了以防万一,如果你还没有这样做,你一定要经过Knuth TAoCP的第4卷第2章。
我知道这可能不是您正在寻找的答案,但它比评论更长。