昨天,我将 MacBook Pro Mid 2015 从 Mac OS Mojave 更新到了 Mac OS Big Sur,今天我注意到用于对 C++ 程序进行压力测试的 bash 脚本运行起来非常慢。我的脚本运行以下代码:
#!/bin/bash
for i in {1..10000}; do
echo "test $i"
./$3 > input
./$1 < input > wrong
./$2 < input > correct
cmp --silent correct wrong || break
done
cat input
echo "correct :"
cat correct
echo "wrong :"
cat wrong
我用输出 1 的 C++ 程序运行了这段代码,但即便如此,它还是很慢。我不知道哪里出了问题,但在我更新系统之前,这段代码的运行速度快了 10 倍。我使用这个字符串编译我的 C++ 代码:
#!/bin/bash
g++ -Wall -Wextra -pedantic -std=c++17 -DLOCAL -O2 -Wshadow -Wconversion -fsanitize=address -fsanitize=undefined -fsanitize=bounds $1.cpp -o $1
有没有办法让这个脚本更快?
UPD:我的朋友建议运行此脚本而不在我的编译字符串中使用任何警告/清理选项,这就是我得到的结果:
# warnings & sanitizers are on
Olerinskiy:~ yan$ time ./a
real 0m0.078s
user 0m0.015s
sys 0m0.051s
# warnings & sanitizers are off
Olerinskiy:~ yan$ time ./a
real 0m0.003s
user 0m0.001s
sys 0m0.002s
这样可以吗?看起来这是问题所在,但我不记得更新前花了这么长时间。