【发布时间】:2018-12-26 14:30:45
【问题描述】:
我想对 ~2048 位有符号整数执行 x = a + b + c。目前我的代码看起来像
mpz_add(x, a, b);
mpz_add(x, x, c);
是否有一个函数可以做到这一点?这在我的应用程序中发生了很多次。我已经分析了我的代码,并且 3 路添加步骤占用了运行时的很大一部分。如果有另一种方法可以一次性完成此操作,可能会有所帮助。
【问题讨论】:
-
我认为适当的
operator+()overload 不会对gmp 的性能产生任何显着影响。 -
是的,运算符重载只是一些语法糖。底层算法可以一次迭代四肢,而我的想法是两次。
-
没有上下文很难回答。 x 每次都是一些新变量,还是您在循环中重复使用的变量?所有数字的大小/符号是否相同?等等。我怀疑 3 路加法器有什么好处,但谁知道呢……您的分析器是否指定了 mpz_add 的哪个部分需要时间?
-
人们认为评估中的临时变量将成为 C++ 的一个问题,但
gmpxx库为此类表达式精心设计,并采用了移动语义等现代技术。
标签: c++ performance gmp bignum