- 主题:C++的map慢的令人发指,尤其比C#慢的太多太多
看了你的代码,就像前面某些楼指出的:你做了3遍重复的查询
map.ContainsKey(n) 一次
if (max < map[n]) 两次
max = map[n]. 三次
--
FROM 221.194.170.*
这三次改为一次的话,还是需要两三秒的,还是比C#的慢。
【 在 A3C 的大作中提到: 】
: 看了你的代码,就像前面某些楼指出的:你做了3遍重复的查询
: map.ContainsKey(n) 一次
: if (max < map[n]) 两次
: ...................
--
FROM 60.12.138.*
这种例子很多的
以visual c++ debug版本为例:
会把临时变量用的栈初始化为0xCC
会启用CRT debug heap
STL里会开启iterator检查
各种人为加的assert()会执行
...
举不胜举
【 在 haw 的大作中提到: 】
: 可以举个例子吗?
:
--
FROM 60.12.138.*
debug版本会在堆上分配多余内存填充字节
因此越界的时候可能不会导致错误
release的时候没有这些字节就出错了
【 在 haw 的大作中提到: 】
可以举个例子吗?
【 在 finlab 的大作中提到: 】
: debug版本中会插入检查代码和调试信息
: release不会,而且代码会优化,所以两者的内存布局不一样
: 所以内存导致的错误表现也不一样。
: ...................
--
FROM 27.38.193.*
说的就是这个
c++的std::map更慢,对应的是C#的sorted dictionary
【 在 xiaofeiyun 的大作中提到: 】
: unorderedmap也是哈希表实现的
: 发自「今日水木 on MI 8」
--
FROM 123.112.18.*
楼主这个测试程序比较特别,就是只插入,没有删除。
这种allocator可以取巧,比如只reserve一个buffer,一直在尾部增长。
你的alloator可否一观?
【 在 wesleyzeng 的大作中提到: 】
: C++ 没有开启 O2 等优化吧。
: 我这里不优化 C++:
: 插入: 11.3169s
: ...................
--
FROM 73.162.73.*
你说共识就是共识?怎么不敢贴代码?
【 在 foliver 的大作中提到: 】
: 看你大家都很信任c++的库。实际上,我看了下爆栈,c++的map慢是共识,网上有很多比标准库效率高好几倍的实现。
:
: 我这个运算程序,除了map外,在处理wchar类型字符串,比如中文,c++也比C#慢非常非常多。因为程序中map的主键是wstring,所以c++那性能就更加不能看了。
: ..................
发自「今日水木 on iPad mini 6」
--
FROM 73.15.3.*
我一直以为c++里面的map相当于python的dict,看来是错了。
【 在 stub 的大作中提到: 】
: 也字不对,map是树,不是哈西
--
FROM 136.56.37.*
这个例子好,明白啦。
【 在 dongdi 的大作中提到: 】
: 优化
: debug基本不优化
: 比如a=b,c=a优化后就是c=a
: ...................
--
FROM 136.56.37.*
调试的时候换上debug build?
【 在 VChart 的大作中提到: 】
: 楼上的意思很明显了,就是性能不一样啊,release会去掉debug信息,运行效率更高,但是隐藏更深的bug可能会在release版本才会出现,更难以调试
: 砀
--
FROM 136.56.37.*