MacOS下自行编译的C++程序首次运行存在延迟的问题求助
MacOS下自行编译的C++程序首次运行存在延迟的问题求助
各位好,我最近在Apple Silicon的Mac(系统是Sequoia)上遇到了个头疼的小问题,想请大家支支招:
我用brew安装的g编译自己写的C程序,编译命令是:
g++ abc.cpp -o abc -O2 -Wall -Wextra
测试用的程序就是最基础的输出hello:
#include <iostream> int main() { std::cout<<"hello"<<std::endl; return 0; }
问题是:每次编译完成后第一次运行./abc,都会有明显的延迟(时间从0.2秒到2秒不等),但之后再运行同一个可执行文件,速度就正常了——我用time命令测了两次的差异:
首次运行的输出:
% time ./abc hello ./abc 0.02s user 0.01s system 10% cpu 0.205 total
后续运行的输出:
% time ./abc hello ./abc 0.02s user 0.01s system 89% cpu 0.028 total
而且不管我用VS Code的集成终端,还是Terminal.app、Iterm、Alacritty,这个延迟都会出现。另外我注意到首次运行时,会有个窄长的小窗口闪一下就消失,里面还有进度条,看起来应该是Mac系统在对我自己编译的程序做安全扫描?我完全不需要这个扫描,毕竟是自己写的代码,想把这个行为彻底关掉。
我已经试过了这些方法,但都没解决问题:
- 折腾xattr相关操作,包括移除可执行文件的
com.apple.provenance属性 - 给生成的可执行文件签名
- 这些操作做完之后,首次运行的延迟和窗口闪烁还是存在,完全没改善
有没有大佬知道怎么彻底禁用这个首次运行的安全扫描,让我自己编译的程序第一次运行就和后续一样快?
内容来源于stack exchange
相关产品推荐
相关产品推荐

