Показать сообщение отдельно
Старый 25.06.2010, 11:23   #53   
Форумец
 
Аватар для Spectator
 
Сообщений: 44,644
Регистрация: 27.05.2003
Возраст: 48

Spectator вне форума Не в сети
Цитата:
Сообщение от Andrei_ra Посмотреть сообщение
Как-то непонятно, да согласен что официальные разработчики компиляторов и еже с ними другого софта - не самые умные люди на земле, но лезть туда где работала группа людей, тем более имеющих вес в области разработок и не один год обычно, это как-то слишком самоуверенно, да и к тому же разработка софта это все-таки получение прибыли в первую очередь (не будем считать редких альтруистов), а если вы будете настолько углубляться в процессе разработки, то интересно какова рентабельность вашей работы будет?
А куда надо лезть? Никакой оптимизатор никогда не оптимизирует код идеально с учетом всех аспектов. Иногда оказывается что нужно отказаться от одной переменной внутри цикла и тогда все переменные поместятся в регистры, или разбить цикл на два последовательных (и это будет работать быстрее))), в некоторых случаях ), и даже не надо ничего руками писать на ассемблере. Ни один компилятор на свете тебе не скажет - слыш, брателло, выкинул бы ты вот эту переменную и у тебя всё будет зашибись.
Цикл от 5 до 1 for (i=5; i>0; i--) работает быстрее чем цикл от 1 до 5 for (i=1; i<=5; i++) , потому что команда проверки содержимого регистра на ноль работает быстрее чем команда сравнения с ненулевым числом (на самом деле даже не одна команда), знать о таких вещах можно только если знаешь ассемблер. И если тело цикла невелико, а итераций достаточно много, то это может дать запросто 25% прироста.
Это в качестве простейшего примера. И никакой компилятор за тебя цикл не "перевернет".
Т.е. иногда достаточно просто знать ассемблер, даже не писать на нем и программа будет работать быстрее)))