![]() |
1
2
在这个古老的3GHz奔腾4上,我得到了2734毫秒的时间
如果启用优化,我将得到93毫秒。 以下是我的代码:
停用
所以我得出结论,你的基准有问题。 |
![]() |
2
8
一些事情会使你的两个例子更具可比性。 首先,您在STL中的示例并不完全正确,因为一件事是两个集合都应该按升序排序(在STL中,称为“严格弱排序”)。 第二,您使用的“集合”在STL中实现为树,而“列表”则是链接列表。随机插入到一个集合比插入到列表的末尾要贵。 尝试使用C++示例中的int列表,并首先对列表进行排序(否则设置惯性段将无法正常工作),我认为您会看到更有利的结果。 |
![]() |
3
5
我在我的Linux盒子上运行你的C++代码
21对我来说意味着你编译时没有进行优化。如果使用MSVC,请确保已列出
|
![]() |
4
1
我更新了您的示例以使用单元测试时使用的一些计时器代码。在我的机器上,我得到以下计时(基于-o3):
基于此,如果我正确地读取了小数,将项目插入第一组需要“4ms”,将项目插入第二组需要50微秒,执行交叉需要1/3毫秒。 我无法在我的机器上运行您的C示例,因此我无法比较时间,但绝对不是您发布的21秒。 |
![]() |
5
0
你的C和C++代码的工作方式不同。C代码使用神奇的散列技巧来加快速度,C++代码使用树技巧来加快速度。有一件事可能会加快速度(忽略测试似乎被破坏的事实),那就是使用散列,如下所示:
|
![]() |
Sweepy Dodo · JSON lite的格式化 4 月前 |
![]() |
giantjenga · 优化整数向量到二进制向量的转换 6 月前 |
![]() |
Zegarek · Postgresql递归查询未提供预期结果 6 月前 |
![]() |
Joe · 为什么这两个查询之间的性能存在如此大的差异? 9 月前 |
![]() |
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 9 月前 |
![]() |
Mohan · 是否有一种更快的方法来编写代码,从1:N中提取许多随机样本? 10 月前 |
![]() |
user2980746 · 在C#字典中键入xyz对的最有效方法是什么? 10 月前 |