我看到速度更快的机器结果好坏参半。当然,更快的机器隐藏了 vs2005 较差的性能质量,但不是全部。
只需使用您的强制性“hello world”C/C++ 程序,只需编译它,(CL /c helloword.cpp),
#include <stdio.h>
#include <windows.h>
int main(char argc, char *argv[])
{
printf("Hello World\n");
return 0;
}
我在 Vc6 下看到 1 秒编译器,在 VS2005 下看到 6 秒编译器。
使用 DEPENDS 来分析这两者,我看到 3 个区域发生 5 秒延迟和时间不同:
~2.5 secs with ADVAPI32.DLL, CryptGetHashParam()
~1.5 secs with OLE2.DLL, StringFromGUID2()
~1.0 secs with C2.DLL, _AbortCompilerPass()
同样,这只是一个编译,而不是一个链接。VC8+ 编译器可执行文件/dll 引用子系统,如加密 API、注册表,出于某种透明的原因,它为直接和纯编译增加了大量开销。
虽然更快的机器可能会隐藏一些隐藏速度变慢,但人们只能想知道微软是否可以通过提供禁用不必要的开销引用的选项来优化编译器。我知道更好的编译器会带来一些开销,但我看到的是 300-500% 的编译时间降级 - 这太糟糕了。
Hector Santos,首席技术官 Santronics Software