小编Scr*_*mer的帖子

计算两个缓冲区之间的差异似乎太慢

我的问题

我有 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 是超标量)。如果我假设每个操作有 …

optimization performance x86 assembly clang++

8
推荐指数
2
解决办法
267
查看次数

clang++ 14不生成PDB文件

我的目标

我想使用 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 与我的情况无关。

windows llvm clang pdb-files

1
推荐指数
1
解决办法
814
查看次数

标签 统计

assembly ×1

clang ×1

clang++ ×1

llvm ×1

optimization ×1

pdb-files ×1

performance ×1

windows ×1

x86 ×1