我刚刚编写了一个小示例来检查C#优化器在索引器情况下的行为。这个例子很简单——我只是将一个数组包装在一个类中并尝试填充它的值:一次是直接填充,一次是通过索引器(它在内部访问数据的方式与直接解决方案完全相同)。publicclassArrayWrapper{publicArrayWrapper(intnewWidth,intnewHeight){width=newWidth;height=newHeight;data=newint[width*height];}publicintthis[intx,inty]{get{returndata[y*width+x];}set{data[y*w
我刚读了这篇博客http://lemire.me/blog/archives/2012/06/20/do-not-waste-time-with-stl-vectors/比较operator[]分配和push_back在内存预保留std::vector上的性能,我决定自己尝试一下。操作很简单://forvectorbigarray.reserve(N);//STARTTIMETRACKfor(intk=0;k结果如下:~/t/benchmark>icc1.cpp-O3-std=c++11~/t/benchmark>./a.out[1.cpp:52]0.789123s-->C++new[
我刚读了这篇博客http://lemire.me/blog/archives/2012/06/20/do-not-waste-time-with-stl-vectors/比较operator[]分配和push_back在内存预保留std::vector上的性能,我决定自己尝试一下。操作很简单://forvectorbigarray.reserve(N);//STARTTIMETRACKfor(intk=0;k结果如下:~/t/benchmark>icc1.cpp-O3-std=c++11~/t/benchmark>./a.out[1.cpp:52]0.789123s-->C++new[