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

Visual Studio编译器标志/架构和性能

  •  1
  • ROAR  · 技术社区  · 14 年前

    我刚刚注意到,在我们的项目中,“enable enhanced instruction set”标志没有设置,可能只是一个疏忽。

    在启用旗子之前,我想问一下是否有人看到了任何实际的性能改进?

    我想我们会看到一些改进我们的应用程序不断地做基于浮点的计算,但它不是一个主要部分。

    2 回复  |  直到 14 年前
        1
  •  0
  •   user180326    14 年前

    简而言之:此设置只启用某些直接映射到SSE指令的内部函数。在普通C++程序中,你不使用这些固有的函数,所以这个设置不能提高性能。

    如果您需要更高的性能,可以尝试寻找一个编译器来重写代码以使用SSE指令(英特尔声称它的编译器可以),但使用多核(使用OpenMP或.NET 4.0)或使用GPU(比SSE更快、更灵活)可能更聪明。

        2
  •  0
  •   Kerido    14 年前

    性能优势将取决于项目是否使用密集的数学计算。对于许多任务(网络、文本处理、数据管理),情况并非如此,因为这里没有(或几乎没有)浮点操作。因此,不会有任何性能提升。

    使用编译器生成的sse/sse2指令不会产生最高性能。首先,您无法控制实际的代码生成。在某些情况下,您需要在旧系统上使用旧式(x87)代码,在新系统上使用启用SSE/SSE2的代码。您可能还想利用最新系统上的SSE3。为此,我建议使用 cpuid 指令,然后切换到可以充分利用处理器功能的实现。然后可以在以sse/sse2为目标的实现中使用编译器内部函数。要瞄准SSE3,你需要一个专用的库,我正试图在Internet上找到它。

    我相信,必须有执行处理器功能分析并允许最佳代码切换的库。我只需要一些时间上网看看。