为什么Clojure有理数使用Java`biginger`s优先于Clojure`BigInt`s?

为什么Clojure有理数使用Java`biginger`s优先于Clojure`BigInt`s?,clojure,Clojure,Clojure发现将JavaBigInteger封装在自己的BigInt类中是值得的,该类在足够大的地方使用普通的long:从而在BigInt的小实例上加速markedy算法,而在大实例上稍微减慢算法的速度 相同的参数不适用于整数的比率吗 那么为什么Clojure使用裸Javabigingers作为其Ratio类型,而不是将它们包装在BigInts中呢 比率早于BigInt 如果我没记错的话,BigInt的引入是为了通过将N附加到(整数)数字文本中来“请求一个框”(获取任意精度的算术),而不会

Clojure发现将Java
BigInteger
封装在自己的
BigInt
类中是值得的,该类在足够大的地方使用普通的
long
:从而在
BigInt
的小实例上加速markedy算法,而在大实例上稍微减慢算法的速度

  • 相同的参数不适用于整数的比率吗
  • 那么为什么Clojure使用裸Java
    biginger
    s作为其
    Ratio
    类型,而不是将它们包装在
    BigInt
    s中呢

比率早于
BigInt

如果我没记错的话,
BigInt
的引入是为了通过将
N
附加到(整数)数字文本中来“请求一个框”(获取任意精度的算术),而不会导致太多的性能损失。调整
比率
可能不是优先考虑的问题。事实上,我一点也不记得接下来要讲的主题了——我也不感到惊讶,
比率其实并不意味着最高的算术性能


尽管如此,也许有一天一些有冒险精神的程序员会重写它以使用
BigInt

也许Clojure拥有自己的BigInt的主要原因是Java的Long和biginger的hashCode不一致。因此,表示相同值的两个数字(Long和biginger)被视为不同的数字;例如,在哈希映射比较中


这个答案的来源就在这里。

的确很重要!非常感谢。