我经常看到像this这样的pprograms,其中Int64
是32位平台上的绝对性能杀手。我现在的问题是:
如果我的任务需要特定的字长(在我的情况下是RNG),在64位平台上是否Int64
有效还是仍然会使用C调用?将Int64
转换为Int
?
答案 0 :(得分:2)
更重要的是,如果你正在进行加密或随机数生成,你必须使用算法所说的数据类型,也要注意签名。如果你这样做 - 你没有这样做你会得到错误的结果,这可能意味着你的加密不安全或你的随机数生成器不是真正随机的(RNG很难,很多看起来是随机的但不是)。
对于任何其他类型的工作,尽可能使用Integer,甚至更好,使用Integral类类使程序具有多态性。然后,如果您认为您的程序比它应该更慢的程序,以确定当您尝试加快它时应该集中注意力的位置。如果你使用Integral类型类从Integer更改为Int很容易。 Haskell应该足够智能,以专门(大多数)使用多态来避免开销的代码。
答案 1 :(得分:1)