以OBS Studio的code為範例 VS2017 15.7.1 release with pdb build 這邊我把兩種方式都寫進去,是為了方便比較asm,實際上只會選一種來用 (2)會轉成iterator的方式 http://en.cppreference.com/w/cpp/language/range-for (2)產生的asm會比(1)快 OBS是用(1),我在修其他bug時看到,就順手改成(2)丟給官方了 稍微想一下就知道index會比較慢了,每個loop都要算 volumes + i*n (array element大小) (2) 每個loop只要 vol += n 這邊我沒想到Jim會連這個也要求要照coding style,就直接寫auto& i了 想說是trivial的東西,因為每個範例都這樣寫 被要求改成 auto &vol void OBSBasic::ClearVolumeControls() { //(1) VolControl *control; for (size_t i = 0; i < volumes.size(); i++) { control = volumes[i]; delete control; } //(2) for (auto &vol : volumes) delete vol; volumes.clear(); } asm code https://hastebin.com/jasikeqada.pl void OBSBasic::ClearVolumeControls() { 00007FF61D43C0B0 mov qword ptr [rsp+8],rbx 00007FF61D43C0B5 mov qword ptr [rsp+10h],rbp 00007FF61D43C0BA mov qword ptr [rsp+18h],rsi 00007FF61D43C0BF push rdi 00007FF61D43C0C0