cl 生成的可执行文件第一次运行非常慢

Posted

技术标签:

【中文标题】cl 生成的可执行文件第一次运行非常慢【英文标题】:Executable generated by cl runs extremely slowly the first time 【发布时间】:2019-06-01 08:15:30 【问题描述】:

当我尝试使用 VS 2019 和 VS 2017 的开发人员提示从命令行编译和运行简单的 C++ 程序时,我的可执行文件在我第一次运行时运行非常缓慢,但第二次又恢复到正常速度时间以后。即使是简单的“Hello World!”从我第一次调用 hello.exe 开始,程序需要 10-15 秒才能完成。我第一次调用可执行文件时似乎有某种开销,我不确定它是什么。什么给了?

这最初是在 VS 2017 中发生在我身上的,所以我认为这可能是 VS 2017 的错误,我安装了 VS 2019。但是,问题仍然存在。

举个准确的例子,我制作了一个名为“test.cpp”的文件,内容如下:

#include <iostream>
#include <ctime>

int main(int argc, char *argv[]) 
    clock_t t;
    t = clock();
    std::cout << "Why is this happening?" << "\n";
    std::cout << clock() - t << "\n";
    return 0;

然后在 VS Developer Prompt 中运行“cl /EHsc test.cpp”,这很快就完成了。但是,当我运行“test.exe”时,输出显示大约需要 10-15 秒。当然时钟输出为0;主函数内部没有发生什么奇怪的事情。另外,我找不到遇到同样问题的人。

【问题讨论】:

您是否启用了任何防病毒软件? 某些具有沙盒功能的 AV(如 aVast)第一次执行应用程序需要很长时间,尤其是因为您的程序是 AV 的新手。 【参考方案1】:

您是否启用了防病毒软件?如果是,请尝试使用防病毒软件

【讨论】:

以上是关于cl 生成的可执行文件第一次运行非常慢的主要内容,如果未能解决你的问题,请参考以下文章

WiX 安装程序生成一个可执行文件

MS C++(CL)编译的可执行文件在 Windows 2000 上不起作用 [重复]

写了一个程序可以编译c语言,怎么自动再链接然后执行生成的可执行文件?

如何在 azure app 服务中使用 cl.exe 编译 c++ 代码并生成可执行文件

java问题,怎样把.java格式的文件变成.exe格式的可执行文件?

为啥在查看证书详细信息之前,数字签名的可执行文件会被视为未签名