- 主题:C++的map慢的令人发指,尤其比C#慢的太多太多
真心觉得你还是搞python算了。
【 在 foliver 的大作中提到: 】
: 起因是我有一个python运算程序,运算太慢。用C#实现后,效率大幅提升。后来想用c++改写应该更快些, 发现竟然慢很多。不能忍。
: 原因程序需要用到大容量字典。百千万级别。
: 对比了下c#和C++(unorder map):
: ...................
--
FROM 111.198.72.*
还是不要写C++了吧
【 在 shootings 的大作中提到: 】
: if (map.find(n) != map.end())
: {
: if (max < map.at(n))
: ...................
--
FROM 120.245.112.*
显然啊
“让二杆子程序员写出能用的代码”
早就不是C++的关注点了
很多年以来C++的演进大前提就是
“不做任何越俎代庖的事情”
【 在 shanhaitdr 的大作中提到: 】
: 是啊,楼上一堆老古董还在以会开启c++编译器调优为自豪呢
: 一个正常普通的应用,楼主其他语言默认配置跑的倍爽,到c++这里要各种配置才能出来等同效果,还得意洋洋,怪不得使用的人越来越少了
--
FROM 103.40.221.*
C++Now 2018: You Can Do Better than std::unordered_map: New Improvements to Hash Table Performance
https://www.youtube.com/watch?v=M2fKMP47slQ
--
FROM 60.12.138.*
c++能不能好好搞搞std啊,这种基本的map.之类还要调优
【 在 z16166 的大作中提到: 】
: 谷歌的一个哥们在 CppCon 2014解释过为何std::unoredered_map慢,因为用了链表,对cache不友好。
: std::map就更加是cache不友好了
:
https://www.youtube.com/watch?v=fHNmRkzxHWs: ...................
--来自微微水木3.5.12
--
FROM 111.201.20.*
我记得以前vc6 debug版是把未明确初始化的内存填充为“烫烫烫烫”
这样一旦有指针指向“烫烫”,就知道出现非法指针了。
【 在 javafish 的大作中提到: 】
: 不不不,准确的说是
: Debug版本会力求确保
: 越界指针一定会触发异常
: ...................
--
FROM 123.112.71.*
上面贴了个截图,是评论区有人喷C++委员会的,为啥不弄个性能好的内置在std中
这种可能在不同的场景有不同的要求,诸如插入多、查询多、查询miss多、引用不变性等要求,要完全满足这些需求而且性能做到很高,估计还是很有难度的,可能偏一方面。std这个按说找个性能更好的替换掉,貌似不是难事?
【 在 fupip 的大作中提到: 】
: c++能不能好好搞搞std啊,这种基本的map.之类还要调优
--
修改:z16166 FROM 60.12.138.*
FROM 60.12.138.*
至少我知道一点,debug模式下,变量没有人为初始化,编译器会给你默认初始化为0;而在release模式下,没有初始化的变量,可能编译器会给个很大的数
【 在 haw 的大作中提到: 】
: “隐藏更深的bug可能会在release版本才会出现,更难以调试”
: 能不能展开讲讲?或者举个例子
--
FROM 222.129.130.*
这事 Qt 已经做了,而且做的非常不错了。Qt没有C++委员会那些人的洁癖,损失一点点极限性能,极大的提高了C++易用性。而且大多数常见场景下都比标准库在默认条件下要快。
【 在 fupip 的大作中提到: 】
: c++能不能好好搞搞std啊,这种基本的map.之类还要调优
--
FROM 171.88.31.*
C++标委会的老爷们有洁癖,Qt其实就是调优的标准库
【 在 fupip 的大作中提到: 】
: c++能不能好好搞搞std啊,这种基本的map.之类还要调优
--
FROM 171.88.31.*