大整数实现,针对小数进行了优化

Big Integer implementation, optimized for small numbers

提问人:Dekakaruk 提问时间:9/17/2023 更新时间:9/17/2023 访问量:46

问:

我似乎找不到太多关于如何优化任何类型的 bignum 以快速处理小数的信息。当数字可能很大时,大整数有时很有用。但大多数情况下,这些数字会小到足以容纳 int64,很少超过它。为了一些罕见的用例而严重减慢小型 int 计算速度似乎是浪费。

从我收集到的信息来看,常用的解决方案是在堆栈上内联小整数,例如

union BigInt {
  int64 small_int;
  ReallyBigInt* really_big_int;
}

但它主要节省内存,任何算术运算都需要检查正在使用哪个变体并相应地分支 - 似乎比两个寄存器的简单加法慢几个数量级。

是否有任何已知的方法可以解决问题?

算法 结构 BigInteger

评论

1赞 Spektre 9/18/2023
任意精度......意味着您的数字是数字数组,大小是动态的......但是,它总是比本机小数数据类型慢......您提出的建议会很慢,因为在每次迭代中都需要大量的早午餐才能在小 int 和大 int 之间进行选择,这可能比对小 int 和大 int 使用 for 循环数组更慢......请参阅无法通过进位使值传播

答: 暂无答案