new通过mmap分配的大块内存并不会清0,所以当时也不会分配物理内存。在循环里第一次访问时才会触发page fault,由内核实际分配物理内存并清0。
而vector的构造函数会清0,所以分配物理内存的时间在你计时器前面。
至于debug版,可能new用某个值填充了内存,所以分配物理内存也在计时器前面。
你把计时器挪到main开头,或者测试的片段多重复几百次,就没有这个差别了。本来计时到毫秒以下就太短了,不可靠,重复到一秒以上为好。
【 在 capriccio 的大作中提到: 】
: 就是下面代码在4种情况下的计算速度:(编译器vs2015,x64)
: 1. a,b都是double*, debug模式: 0.0024秒
: 2. a,b都是double*, release模式:0.0035秒
: ...................
--
修改:ilovecpp FROM 114.86.89.*
FROM 114.86.89.*