C++ FAQ LITE
Apr. 10th, 2009 03:16 pmНебольшой такой FAQ по C++:
http://www.parashift.com/c%2B%2B-faq-lite/index.html
http://www.parashift.com/c%2B%2B-faq-lite/index.html
do { *to = *from++; } while (--count > 0);После оптимизации:
int n = (count + 7) / 8; switch (count % 8) { case 0: do { *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while (--n > 0); }Смысл оптимизации здесь - уменьшить кол-во итераций цикла, тем самым уменьшив число сравнений (прием называется Размотка цикла).
Статья полностью: http://blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice
Ыкс: http://object.livejournal.com/1206315.html