我经常看到这样的 pprogram ,在Int64
32 位平台上绝对是性能杀手。我现在的问题是:
如果我的任务需要特定的字长(在我的情况下是 RNG),Int64
在 64 位平台上是有效的还是仍然使用 C 调用?Int64
将 an 转换为 an 的效率如何Int
?
在 64 位系统上 Int64应该没问题,不过我不确定。
更重要的是,如果你在做加密或随机数生成,你必须使用算法说要使用的数据类型,还要小心签名。如果您不这样做,您将得到错误的结果,这可能意味着您的密码术不安全,或者您的随机数生成器并不是真正随机的(RNG 很难,而且很多看起来是随机的,但实际上并非如此)。
对于任何其他类型的工作,尽可能使用 Integer,甚至更好的是,使用 Integral 类型类使您的程序具有多态性。然后,如果您认为您的程序比它应该配置的要慢,那么当您尝试加快它时,它会确定您应该集中在哪里。如果您使用 Integral 类型类,从 Integer 更改为 Int 很容易。Haskell 应该足够聪明,可以专门化(大多数)使用多态性的代码来避免开销。