【问题标题】:Is the 64bit Windows platform immature? (even if comparing 32bit binaries with 64bit binaries running on it)64位Windows平台不成熟吗? (即使将 32 位二进制文​​件与在其上运行的 64 位二进制文​​件进行比较)
【发布时间】:2010-02-24 03:01:36
【问题描述】:

我编译了一个 ioquake3 的 64 位二进制文​​件和一个 SDL 二进制文件以配合它,我注意到在 Windows 7 64 位上运行,虽然相对稳定,但它没有一流的性能。

64 位 Debian 上的等效二进制文件,运行速度肯定更快,而且非常稳定。

我在想:所有主要制造商仍然主要发送 32 位二进制文​​件 - 我能想到的主要例外是 Autodesk 的 Autocad - Windows 在其 64 位库上仍然不成熟吗?

【问题讨论】:

  • 这可能是社区 wiki 的候选者...?

标签: windows linux performance 64-bit


【解决方案1】:

我会回答不。自从 Windows XP 以 64 位版本发布以来,操作系统中的 64 位支持就一直存在,尽管 pre-vista 驱动程序和第 3 方软件非常具有实验性。 Windows 是一个功能齐全的 64 位操作系统。

但是,您必须记住,Microsoft 的成功是建立在 Windows 可以在任何基于 x86 的处理器和任何其他硬件组合上运行良好的事实之上的,这要归功于 HAL。当 64 位 XP 首次问世时,驱动程序对 64 位形式感到害怕,直到获得牵引力。正如您所观察到的,大多数制造商仍然只为 Windows 开发 32 位应用程序。 Visual Studio 和 Microsoft Office 证明它不仅仅是第 3 方供应商。为什么?舒适。在任何一家 pc 商店走一走,您会听到各种关于当今现代笔记本电脑中 64 位 CPU 的赞誉,但您实际上会发现他们的操作系统是 32 位的。这是一个标准,适用于 32 位。

相比之下,Linux 一直是程序员的平台。大多数发行版至少支持 i386 和“x86-64”;有些支持 ppc 架构。内核几乎可以构建在人类已知的所有芯片组上。为什么? Linux 不受需要商业产品稳定性才能生存的限制,并且通常是研究人员的平台。不仅如此,即使核心开发人员对移植它没有兴趣,你也可以。 gnu 系统的大部分其余部分都是为可移植性而编写的,因此在其他地方编译是微不足道的。并且不以可移植的方式编写代码被认为是不好的礼仪。

看看 linux 中的 Flash 支持 - 64 位 alpha。甚至 Mozilla 也仅提供 32 位版本,尽管它们允许分销商构建官方 64 位版本。 Skype 仅支持 32 位。

基本上,许多软件开发人员还不需要支持 64 位,或者至少不这么认为。因此,我想说这两个操作系统都是成熟的——它们周围的生态系统是不同的。

【讨论】:

  • 轻松并不是唯一的原因,我注意到依赖于寄存器的依赖项(以 Visual Studio 为例)如果它们切换都会中断,甚至比版本升级本身更严重。他们不想激怒供应商并立即破坏所有插件,迫使所有这些公司使用 64 位版本,或者更有可能支持 2 个不同版本的插件。
  • 是的。我已经看到基于指针长度也是 32 位这一事实来执行各种丑陋事情的代码。大多数情况下,它很容易移植,除了组装和类似的东西。让我想知道他们的来源是什么样的......
【解决方案2】:

虽然 Windows 正在慢慢向 64 位迈进,但可以轻松地说,Linux 具有巨大的优势,甚至可能是压倒性,因为它可以在多种平台上运行上。 Windows 开发人员现在才遇到的问题早已在 Linux 下得到了解决(当然有 Linux 开发人员选择忽略这些解决方案;他们的代码往往很脆弱,有时还不能移植) .

【讨论】:

  • 这里不是这样。 Linux 和 Windows 在 x64 优化方面没有区别。如果 C 代码本身在 Linux x64 上运行良好,它也应该在 Windows x64 上运行良好。我能想象的唯一原因是,GCC 对 x64 的优化比 VC++ 更好。但我对此表示怀疑。
  • 可能是管道的另一部分存在问题。哎呀,它甚至可能是 SDL 本身。
  • 我也怀疑 SDL 是原因,因为对于 ioquake3,它只负责 I/O 和设置视口。所有性能关键的 API 调用都是通过 OpenGL 完成的。但是 32 位和 64 位的 OpenGL 驱动程序也应该统一。
  • 很难比较这些系统,因为我们不知道 win 与 debian 机器上还运行着什么(即 win 运行一些消耗大量 cpu 资源的服务),我们也不知道win 调度程序的复杂性,所以我们不知道对于一种类型的进程是否比另一种更有效。我一直认为 Linux 在所有方面都更快,但我只是有偏见!
  • Windows 3D 游戏性能至少应该和 Linux 一样好。上次我检查 Doom 3 时,ETQW 在 Linux 上的运行速度明显变慢。这只是一个驱动程序的事情,但仍然没有什么大惊喜。 Windows 是运行所有游戏基准测试的市场,因此其上的驱动程序更加优化 - 甚至专门针对单个游戏,如果它是 AAA 标题。
【解决方案3】:

定义“相对稳定”?

如果您运行的是 x64 位 Windows,则所有 Windows API 调用最终都使用相同的 64 位函数,因此根本没有稳定性差异。

您应该配置文件。最肯定的是,用户空间应用程序内部的某些东西导致了性能下降,而不是内核。

您确定在编译 64 位二进制文​​件时运行的是相同的优化级别吗?你用的是什么编译器?

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 2011-11-26
    • 2018-09-17
    • 1970-01-01
    • 2011-09-08
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多