我可以从Int32和Int64获得什么样的性能?

时间:2011-01-04 07:01:22

标签: haskell 64-bit int 32bit-64bit word-size

我经常看到像this这样的pprograms,其中Int64是32位平台上的绝对性能杀手。我现在的问题是:

如果我的任务需要特定的字长(在我的情况下是RNG),在64位平台上是否Int64有效还是仍然会使用C调用?将Int64转换为Int

的效率如何?

2 个答案:

答案 0 :(得分:2)

<64>在64位系统上Int64 应该没问题,但我不确定。

更重要的是,如果你正在进行加密或随机数生成,你必须使用算法所说的数据类型,也要注意签名。如果你这样做 - 你没有这样做你会得到错误的结果,这可能意味着你的加密不安全或你的随机数生成器不是真正随机的(RNG很难,很多看起来是随机的但不是)。

对于任何其他类型的工作,尽可能使用Integer,甚至更好,使用Integral类类使程序具有多态性。然后,如果您认为您的程序比它应该更慢的程序,以确定当您尝试加快它时应该集中注意力的位置。如果你使用Integral类型类从Integer更改为Int很容易。 Haskell应该足够智能,以专门(大多数)使用多态来避免开销的代码。

答案 1 :(得分:1)

有关64位性能的有趣文章:

Isn’t my code going to be faster on 64-bit???

正如文章所述,最大的瓶颈不是处理器,而是缓存和内存I / O.