Подскажите пожалуйста! Кто нибудь соревновался с Intel Compilerom в оптимизации программ??? Интерсны какие результаты и стоит ли соревноваться?
Вопрос риторический - безусловно человек сможет оптимизировать лучше как по скорости так и по размеру, но затратит на это настолько больше времени что любой проект кроме hello world станет экономически не выгодным, что в наше время гигагерцовых процессоров явно является главным фактором для ответа на вопрос "стоит ли пробовать".
Dr.Golova А вот все-таки!! Есть ведь задачи, которые требуют оптимизации... Вот если с точки зрения практики!!!
Уже давно известен ответ на твой вопрос : профилирование. Запускается специальная компиляция с профилированием, которая покажет какие части программы чаще всего выполняется и на что тратится основное время процессора. После этого смотришь туда внимательно и оптимизируешь. Повышение уровня оптимизации, использование MMX и SSE на сложной реальной программе не дает ничего - я лично проверял. Сам Интел предлагает специальные оптимизированные математические библиотеки. Значит, трансляция с оптимизацией ,например , программы обращения матрицы мало что дает ?! А нужна ее сер"езная переделка. Есть система VTune, которая это автоматизирует.
emergenter В 2 раза не получится, а получится пару процентов. Компилятор генерирует неплохой код в большинстве случаев. Скорость кода в правильном расположении данных и хороших алгоритмах. Ну и конечно, профилирование полезно.
S_T_A_S_ AsmGuru62 valterg Т.е. я так понял все вы против ОПТИМИЗИЦИИ в ручном виде!! Я правильно понимаю??
emergenter Да - совеменные компиляторы(gcc 3.x, MSVC 7/8, Intel C++ 8) при правильном использовании дают код, который практически нечем улучшить вручную.
IMHO в некоторых программах оптимизация по скорости вообще безсмысленна, а в некоторых случаях можно написАть и более эффективный код. Ещё добавлю: не стоит надеятся, что компилер нормально переварит "абы как" написанный код, в некоторых "клинических" случаях никакой компилятор IMHO не поможет.
S_T_A_S_ IMHO написание более эффективного кода(с точки зрения скорости) - тоже есть оптимизация по скорости. Эт точно - верно на 100%.
Много слов, никакой эмпирики, никакой математики. Похоже на сходку перебравших пива сисадминов. Про то что можно дурака валять в "эпохе До_Фига_Герцовых" процов я слышу со времён мега_герцовых, десятки мега_герцовых, сотни_мега герцовых. С тех же пор я постоянно слышу жалобы про то что "всё тормозит", я вижу покупателей всё более герцовых процов, которые никак до нирваны "всё летает" меняя и процы и карточки и т.п. Сам как пользователь постоянно чувствую себя надутым - как только бабки выложу за новую машину - как будто поколение софтовиков-программёров меняется на ещё более тормознутое и воз и ныне там. Так что резкое улучшение обычно связано со сменой самого софта (если повезёт) и оптимизации системы. А ведь я смотрю как "обычный пользователь". Есть по настоящему сложные процессорные обработки и вычисления, инет кишит предложениями об "объединении ресурсов" для решения очередной задачи. Так что болтовня про "эпохи *герцовых" - не выдерживает эмпирики. Google к примеру прежде всего революционный софт а потом уже мейнфреймы. Эльбрус - прежде всего интересные алгоритмические решения а потом уже частота. Аргумент второй в нашем несерьёзном разговоре: Оптимизирует не компилятор, а человек который придумал компилятор, который для реализации своих мыслей (которые в голове бывают) создал робот-автомат - компилятор и научил их ему. Тоже касается библиотек мат. обеспечения - их пишет не кремневый Интел а вполне конкретные человечки. И каждый решает для себя что ему делать, или становится таким же человечком который и компилятор может улучшить и библиотеку или в пупсики играть. Другое дело что ассемблер или другой низкоуровневый подход - сам по себе ничего не гарантирует, он лишь предоставляет дополнительные удобства для реализации мыслей и более наглядный вид для анализа. Но мысли и анализ он за человека не сделает.
НУ ЭТО ФИЛОСОСФИЯ!!! Я спросил лишь кто нибудь пробывал состязаться с компайлероам от ИНТЕЛ!!! Просто я чувствую что мне предстоит это!! Хочу выйграть эту дуэль!! Готов даже пиво поставить за советы.