gpt4 book ai didi

c++ - 为什么我的作用域锁比手动锁更快?

转载 作者:太空狗 更新时间:2023-10-29 21:05:57 30 4
gpt4 key购买 nike

this code sample我对 pthread 互斥量的范围与手动锁定进行了基准测试。我希望这两种方法具有相同的性能。但令我惊讶的是,范围锁解决方案似乎更快一些。

谁能解释为什么会这样?

我正在使用 g++ 4.5.2 并使用以下选项进行编译:

g++ -std=c++0x -O2 -o test main.cpp

更新

在我的本地 PC(不是 Ideone)上进行 20 亿次迭代时,我得到了更大的差异:

g++ -std=c++0x -O2 -o test main.cpp
scoped_lock: 10530ms
normal: 11290ms
scoped_lock: 10530ms
normal: 11280ms
scoped_lock: 10530ms
normal: 11280ms
scoped_lock: 10530ms
normal: 11290ms

更新2

我用更高分辨率的时钟改进了程序:http://ideone.com/CMbuw .这次作用域锁有点慢。

我认为可以肯定地断定这是一个测量异常。

最佳答案

changed the iteration count to 50 millions (在你的代码中是 2000 万)结果现在是

result: Time limit exceeded     time: 5s    memory: 2828 kB     signal: 24 (SIGXCPU)
input: no
output:
scoped_lock: 740ms
normal: 740ms
scoped_lock: 710ms
normal: 710ms
scoped_lock: 720ms
normal: 720ms

完全相同。所以我会责怪你的测试用例中的测量错误 - 只是没有足够的代码迭代。如果您真的关心您应该查看发出的机器代码。

关于c++ - 为什么我的作用域锁比手动锁更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576000/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com