我有 2 个相邻的大小相同的字节缓冲区(每个缓冲区大约 20 MB)。我只是想数一下它们之间的差异。
该循环在具有 3600MT RAM 的 4.8GHz Intel I7 9700K 上运行需要多长时间?
我们如何计算最大理论速度?
uint64_t compareFunction(const char *const __restrict buffer, const uint64_t commonSize)
{
uint64_t diffFound = 0;
for(uint64_t byte = 0; byte < commonSize; ++byte)
diffFound += static_cast<uint64_t>(buffer[byte] != buffer[byte + commonSize]);
return diffFound;
}
Run Code Online (Sandbox Code Playgroud)
在我的电脑(9700K 4.8Ghz RAM 3600 Windows 10 Clang 14.0.6 -O3 MinGW)上需要 11 毫秒,我觉得它太慢了,而且我错过了一些东西。
CPU 读取 40MB 的时间应该少于 2 毫秒(我的 RAM 带宽在 20 到 30GB/s 之间)
我不知道如何计算执行一次迭代所需的周期(特别是因为现在的 CPU 是超标量)。如果我假设每个操作有 …
我想使用 clang++ 14.0.6 和 mingw ucrt (类似 GCC)而不是clang-cl / clang-cpp 生成应用程序的 PDB 文件。
未生成 PDB 文件。
clang++ -march=native -O3 -g -gcodeview main.cpp -o filecomp.exe
Run Code Online (Sandbox Code Playgroud)
我在 --help、clang github issues 和现有的 SO 问题中查找信息,但到目前为止没有找到任何答案。
大多数人谈论旧版本的 Clang 解决方案对我不起作用,或者 Clang-cl 甚至 Visual Studio 捆绑的 clang-cl 与我的情况无关。
assembly ×1
clang ×1
clang++ ×1
llvm ×1
optimization ×1
pdb-files ×1
performance ×1
windows ×1
x86 ×1