Re[3]: Почему вытесняется поток?
От: Experimenter Беларусь  
Дата: 20.09.08 15:14
Оценка:
Здравствуйте, 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 — это ссылка на статью, которая обсуждалась.

Пустые циклы не рулят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.