代码之家  ›  专栏  ›  技术社区  ›  vad

C/C++、Windows控制台应用程序的速度取决于目标是32还是64位?

  •  0
  • vad  · 技术社区  · 14 年前

    假设内存不是问题,针对64位OS是否会使C/C++ Windows控制台应用程序运行得更快?

    更新 :由一些注释/答案提示,应用程序涉及统计算法(例如线性代数、随机数绘制等)。

    6 回复  |  直到 14 年前
        1
  •  3
  •   Jerry Coffin    14 年前

    主要是对编辑的回答,而不是最初的问题:我移植了一个应用程序,它对统计和(特别是)线性代数非常重要,可以作为64位代码运行。对于这段代码,所做的努力是最小的,我们的速度提高了3:1。

    我怀疑大多数这样的概念,即通常不会有来自(通常是间接的)公司的代码将不容易移植,并尽最大努力告诉客户为什么继续购买他们的程序是一个好主意,即使它仍然是32位代码。我移植的代码(或者在大多数情况下只是“重新编译”)。 没有人 以64位代码的形式出现的速度要慢一些,而且大多数代码的出现速度至少要快一点。

        2
  •  3
  •   unwind    14 年前

    答案可能是。你必须测量。

    使用64位目标允许使用更多的寄存器,这意味着对内存的访问更少,因此执行速度更快。

    另一方面,使用64位目标会强制所有指针和地址都是64位,从而扩大内存占用,并降低执行速度。

        3
  •  1
  •   JaredPar    14 年前

    答案可能很大。

    针对不同的平台肯定会对应用程序产生性能影响,因为您正在对应用程序进行实质性的更改。它对于类型、操作和交互的操作系统具有不同的大小语义。

    这些因素和许多其他因素肯定会导致应用程序中的性能变化。无论它是微妙的,巨大的,更好的,更糟的,等等…将高度特定于您正在编写的应用程序类型。如果没有更多的细节,就不可能给出一般的答案。

        4
  •  0
  •   Richard    14 年前

    其他一切都相等(不太可能),64位的额外数据大小(处理指针时要移动的数据量的两倍)将导致期望它变慢。

    但其他因素(如头顶的哇)可能主导一切…

    唯一的方法是在目标硬件上测试应用程序。

        5
  •  0
  •   Jay    14 年前

    如果大部分执行时间都花在数学上,那么您可能会得到一个好处。在大多数情况下,这是不正确的。如果你在做核反应堆的蒙特卡罗模拟,或者光线跟踪渲染,或者类似的事情,你可能会看到一个巨大的好处。我的拭子“没什么好处”

        6
  •  -1
  •   Martin Beckett    14 年前

    可能更慢-您已经有效地将CPU缓存的大小减半了

    当然,英特尔和AMD的工程师都知道这一点,因此内存管理器做了大量工作来减少64位宽指针和整数的影响,因为只有32位低