我制作了一些合成容器Range
,它接受最小/最大范围作为std::pair
或一组整数作为std::set
。
在内部,它将输入的副本保存为void *
这个容器支持iterators
,我很好奇这个容器与集合std::set
之间的迭代速度有多快。
我确保在测试中使用以下策略编写每个迭代循环:
我有以下时间: performance test
速度测试
范围的运行时间:[配对]:13.0522毫秒
范围的运行时间:[设置]:272.54 ms
std :: set的运行时间:438.239 ms
RUNTIME范围:正常循环:0.000175 ms
第一
我很惊讶,我也希望你也是,因为我的Range
容器为什么要更快,因为Range
的迭代器包含bot std::pair
的迭代器(只是一个整数)和{ {1}}。如果std::set
是Range::iterator
,我的Range
实现会将所有运算符转发给std :: set。
第二 对此有任何意见,对此实施有效。可能有更好的方法吗?
答案 0 :(得分:0)
用dyp的评论: std :: set更快!
速度测试============================
范围的运行时间:[配对]:8.69353毫秒
范围的运行时间:[设置]:281.202 ms
std :: set的RUNTIME:220.367 ms //重新发送std :: set
RUNTIME范围:正常循环:0.000196 ms