7

我经常看到这样的 pprogram Int6432 位平台上绝对是性能杀手。我现在的问题是:

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

4

2 回答 2

2

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

更重要的是,如果你在做加密或随机数生成,你必须使用算法说要使用的数据类型,还要小心签名。如果您不这样做,您将得到错误的结果,这可能意味着您的密码术不安全,或者您的随机数生成器并不是真正随机的(RNG 很难,而且很多看起来是随机的,但实际上并非如此)。

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

于 2011-08-05T02:10:12.663 回答
1

关于 64 位性能的有趣文章在这里:

我的代码在 64 位上不是会更快吗???

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

于 2011-01-04T08:21:30.343 回答