【问题标题】:Why doesn't WD Velociraptor speed up my VC++-compilation significantly?为什么 WD Velociraptor 不能显着加快我的 VC++ 编译速度?
【发布时间】:2008-10-10 13:48:53
【问题描述】:

这里有几个人建议切换到新的 WD Velociraptor 10000rpm 硬盘。杂志文章也赞扬了表现。 我买了一个并将我的旧系统镜像到它。编译速度的提高有点令人失望:

  • 在我的旧三星驱动器(SATA,7200)上,编译时间为 16:02
  • 在 Velociraptor 上构建需要 15:23

我有一个 1.5G 内存的 E6600。这是一个包含 1200 个文件的 C++ 项目。构建是在 Visual Studio 2005 中完成的。声学管理已关闭(反正没有太大区别)。

是不是出了什么问题,或者我可以预料到这种适度的加速真的是全部吗?

编辑: 有些人建议增加 RAM。我现在这样做了,通过将我的 RAM 翻倍至 3GB 获得了最小的收益 (3-5%)。

【问题讨论】:

  • 我相信你的意思是Q6600的处理器?
  • 我的新机器解决了这个问题。事实证明,纯粹的 CPU 能力是补救措施。 i7-870 现在在 4:22 编译。太好了!

标签: visual-c++ hardware performance compilation


【解决方案1】:

您是否使用 /MP 选项(未记录,您必须手动将其输入到您的处理器选项)来启用源代码级并行构建?这将大大加快您的编译速度,而不仅仅是更快的硬盘。从中获得的收益微乎其微。

【讨论】:

  • 这在 VC++ 2008 中得到官方支持。
  • 太棒了!!!将 /MP 添加到编译选项后,它是在 9:48(而不是 15:23)构建的。
  • 太棒了!我不知道它已经包含在 VC++2005 编译器中,这无疑帮助我加快了构建速度。
【解决方案2】:

Visual Studio 2005 可以并行构建多个项目,并且默认情况下会在多核计算机上这样做,但根据您的项目相互依赖的方式,它可能无法并行构建它们。

如果您的 1200 个 cpp 文件位于单个项目中,则您可能没有使用所有 CPU。如果我没记错的话,C6600 是四核 CPU。

戴夫

【讨论】:

  • 不用道歉!无论如何,E6600 是双核 CPU,因此如果您不并行构建项目,您仍然需要进行一些显着的改进。
【解决方案3】:

我想硬盘读取不是你编译的瓶颈。实际上,很少有东西需要从硬盘读取/写入硬盘。您可能会看到更多内存或更快的处理器带来更多的性能提升。

【讨论】:

    【解决方案4】:

    我从结果中建议您的硬盘延迟速度不是您正在寻找的瓶颈,或者您的项目已经接近于尽快构建。其他需要考虑的事项是:

    1. hdd 访问时间(尽管由于总线速度限制,您可能无法对此做很多事情)
    2. RAM 访问速度和大小
    3. 处理器速度
    4. 减少后台进程

    【讨论】:

      【解决方案5】:

      ~6% 的速度提升只是通过改进您的硬盘驱动器。就像豪勒所说的那样。使用一些更快的内存和 PCU。

      【讨论】:

        【解决方案6】:

        正如许多人已经指出的那样,您可能没有解决真正的瓶颈。随机改变部分(或代码)就像人们可以说的“bass ackwards”。 您首先确定性能瓶颈,然后进行更改。

        如果您受 CPU 或 I/O 限制,Perfmon 可以帮助您获得一个很好的概览,您想查看 CPU 利用率、磁盘队列长度和 IO 字节以初步了解正在发生的事情。

        【讨论】:

          【解决方案7】:

          对于更换硬盘来说,这实际上是一个相当大的速度提升。此时您可能会受到内存或 CPU 的限制。现在 1.5GB 很轻,而且 RAM 很便宜。您可能会看到更多内存带来的一些相当大的改进。

          作为建议,如果您安装了多个驱动器,您可以尝试将构建目录设置为与源文件不同的磁盘上的某个位置。

          至于这条评论:

          如果您的 1200 个 cpp 文件位于单个项目中,则您可能没有使用所有 CPU。如果我没记错的话,C6600 是四核 CPU。

          实际上,C6600 什么都不是。有 E6600 和 Q6600。 E6600 是双核,Q6600 是四核。在我的开发机器上,我使用四核 CPU,尽管我们的项目有 1200 多个文件,但它在编译期间仍然受到处理器的限制(尽管更快的硬盘驱动器仍然有助于加快速度!)。

          【讨论】:

            【解决方案8】:

            1200 个源文件很多,但没有一个可能超过几百 K,因此虽然它们都需要读入内存,但不会花费很长时间。

            将您的系统内存提高到 4G(是的,是的,我知道 32 位操作系统的 3.something 或other 限制),也许看看您的 CPU 会比仅仅使用更快的磁盘提供更多的性能提升开车可以。

            【讨论】:

              【解决方案9】:

              VC 2005 每个项目一次编译的文件不超过一个,因此要么迁移到 VC 2008 以使用您的两个 CPU 内核,要么将您的解决方案拆分为多个库子项目以进行多个编译。

              【讨论】:

                【解决方案10】:

                通过将所有源代码都放在内存驱动器上,我将编译时间减半。

                我试过这些人http://www.superspeed.com/desktop/ramdisk.php,安装了一个 1GB 内存驱动器,然后将我所有的源代码复制到它上面。如果直接从 RAM 构建,IO 开销会大大降低。

                让您了解我正在编译什么,以及在什么方面;

                • WinXP 64 位
                • 4GB 内存
                • 2.? GHz 双核处理器
                • 62 个 C# 项目
                • 大约 250kloc。

                我的构建从大约 135 秒变为 65 秒。

                缺点是您的源文件位于 RAM 中,因此您需要更加警惕源代码控制。如果您的机器断电,您将丢失所有未版本化的更改。当您关闭机器时,某些 RAMdrives 会将自己保存到磁盘中,这一事实略有缓解,但您仍然会丢失上次结帐或上次关闭时的所有内容。

                此外,您必须为软件付费。但是,既然您正在为硬盘买单,也许这没什么大不了的。

                好处是增加了编译时间,而且 exe 已经存在于内存中,因此启动时间和调试时间要好一些。不过,真正的好处是编译时间。

                【讨论】:

                • 你的意思是你把编译时间减半了。 =)
                猜你喜欢
                • 2011-01-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多