水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
首页
|
上页
|
下页
|
尾页
|
3/16
|
转到
主题:C++的map慢的令人发指,尤其比C#慢的太多太多
20楼
|
whitestone
|
2022-06-18 13:17:30
|
只看此ID
有意思,随手写了个测试代码,居然被审查了。
https://onlinegdb.com/KRg18Rfg3
i7-10710U @macOS
30M insertion, 耗时 10.xxx 秒,确实慢。
【 在 leving 的大作中提到: 】
: 贴一下测试代码吧。
--
FROM 218.18.4.*
21楼
|
leporidae
|
2022-06-18 13:48:57
|
只看此ID
mark
【 在 foliver 的大作中提到: 】
:
: 大家都要测试代码。我贴附件吧。代码里面有关键字。看txt附件,就一个简单的函数。C#和C++都要文件里面
:
: 可以在自己机器跑一下。不要迷信C++的标准库性能。
:
#发自zSMTH@OCE-AN10
--
FROM 120.230.94.*
22楼
|
iMx
|
2022-06-18 13:49:13
|
只看此ID
debug 不优化
【 在 cjohny 的大作中提到: 】
: 这个性能差异是debug build的logging导致的吗?
--
FROM 219.136.128.*
23楼
|
iMx
|
2022-06-18 13:50:19
|
只看此ID
c++,可以自己造新轮子
没造轮子的心,用啥c++
【 在 foliver 的大作中提到: 】
: 看你大家都很信任c++的库。实际上,我看了下爆栈,c++的map慢是共识,网上有很多比标准库效率高好几倍的实现。
: 我这个运算程序,除了map外,在处理wchar类型字符串,比如中文,c++也比C#慢非常非常多。因为程序中map的主键是wstring,所以c++那性能就更加不能看了。
: 总之,除非程序是单纯密集数值运算,否则c++真没啥性能优势。
: ...................
--
FROM 219.136.128.*
24楼
|
thorne
|
2022-06-18 13:53:08
|
只看此ID
看看benchmark 不同实现性能差异太大
--
FROM 218.72.116.*
25楼
|
wesleyzeng
|
2022-06-18 13:53:38
|
只看此ID
C++ 没有开启 O2 等优化吧。
我这里不优化 C++:
插入: 11.3169s
查询: 8.4850s
开启优化后:
插入: 2.4019s
查询: 0.1999s
给 C++ 增加分配器后:
插入: 0.8760s
查询: 0.1800s
【 在 foliver 的大作中提到: 】
: 大家都要测试代码。我贴附件吧。代码里面有关键字。看txt附件,就一个简单的函数。C#和C++都要文件里面
: 可以在自己机器跑一下。不要迷信C++的标准库性能。
:
: ...................
--
修改:wesleyzeng FROM 47.251.4.*
FROM 223.72.93.*
26楼
|
Madlee
|
2022-06-18 14:12:13
|
只看此ID
就是没优化,当然常识错误也很多,比如find了又用at,相当于find了三次。
【 在 foliver 的大作中提到: 】
: 大家都要测试代码。我贴附件吧。代码里面有关键字。看txt附件,就一个简单的函数。C#和C++都要文件里面
: 可以在自己机器跑一下。不要迷信C++的标准库性能。
:
: ...................
--
修改:Madlee FROM 101.88.154.*
FROM 101.88.154.*
27楼
|
shootings
|
2022-06-18 14:42:47
|
只看此ID
if (map.find(n) != map.end())
{
if (max < map.at(n))
{
max = map.at(n);
}
}
你这段代码写得是真好。。。。
【 在 foliver 的大作中提到: 】
: 大家都要测试代码。我贴附件吧。代码里面有关键字。看txt附件,就一个简单的函数。C#和C++都要文件里面
: 可以在自己机器跑一下。不要迷信C++的标准库性能。
:
: ...................
--
FROM 111.197.232.*
28楼
|
gambol
|
2022-06-18 14:54:00
|
只看此ID
编译器优化的机会到了
加个临时存一下结果就行
【 在 shootings 的大作中提到: 】
: if (map.find(n) != map.end())
: {
: if (max < map.at(n))
: ...................
--
FROM 125.33.203.*
29楼
|
kube
|
2022-06-18 14:59:14
|
只看此ID
大概率是使用的问题
搞高性能C#一般来说不太可能超越c/c++
【 在 foliver 的大作中提到: 】
: 起因是我有一个python运算程序,运算太慢。用C#实现后,效率大幅提升。后来想用c++改写应该更快些, 发现竟然慢很多。不能忍。
: 原因程序需要用到大容量字典。百千万级别。
: 对比了下c#和C++(unorder map):
: ...................
--
FROM 123.112.66.*
首页
|
上页
|
下页
|
尾页
|
3/16
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版