BigInteger compareTo vs subtract + signnum()

时间:2014-07-07 04:19:26

标签: java biginteger

问题

在我的代码中尝试以下可能的优化。 (更新:减去更慢这是有道理的,因为它是一个更复杂的过程。)

代码:

   if (bigK.compareTo(prevLevelChildrenCount) > 0) 

 if (bigK.subtract(prevLevelChildrenCount).signum() == 1) 

速度(减去vs compareTo)当迭代使用100,000,000次随机数时。

enter image description here

问题:

在溢出方面使用减法作为整数时,biginteger行为是否相同?

我发现了以下问题,但认为这是不重复,因为biginteger没有与整数相同的限制。但它是否共享溢出问题?

1 个答案:

答案 0 :(得分:2)

  

为什么我不应该这样做?我比较两个正大整数?

我不明白为什么你不应该这样做,确保它先行。

  

哪一个应该更快?在我自己的测试中,减法似乎工作得更快。

我不相信一个人比普通人更快。请注意,微优化很少有效。

  

在溢出方面使用减法作为整数时,biginteger行为是否相同   但它是否共享溢出问题?

不,BigInteger不会溢出。根据链接的Javadoc,

  

有关溢出的规范中的所有细节都将被忽略,因为BigIntegers 可以根据需要调整以适应操作的结果。