Здравствуйте, Shadedsun, Вы писали:
S>Здравствуйте, Experimenter, Вы писали:
E>>Не совсем уверен, что MySpinWait в Вашем примере выполняет какую-то работу. Об агрессивной оптимизации слышали? Я до недавнего времени тоже ничего не знал. Но взгляните сюда: http://forum.vingrad.ru/index.php?showtopic=180722&view=findpost&p=1310994. Поэтому и подвисаний нет. Я так думаю.
S>S>
S>for (int i = 0; i < 100; i++)
S>{
S> int sum = i + i;
S>}
S>
S>Тут никаких сообщений не будет, но тело цикла будет пустым в сборке. Сам цикл оставляют видимо из-за того, что есть такая штука как busy-waiting loops. Хотя, честно говоря, я не очень понимаю зачем это делается — может просто страшно удалить полностью.
S>Угадайте, откуда это.
В том же топике, немного выше:
S>Про статью:
S>
S>1. Перечисления. Автор двоечник и мерил скорость выполнения пустого цикла, компилер выкидывает такое тело, в этом может убедиться каждый, S>воспользовавшись рефлектором. Я на месте компилера ещё бы и сам цикл выкидывал. Даже если автор отключил оптимизацию, то джитер всё равно тело S>цикла выкинет:
S>
http://www.interface.ru/home.asp?artId=7747 — это ссылка на статью, которая обсуждалась.
Пустые циклы не рулят.