Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
Хищник писал(а): Mihail писал(а): Хищник писал(а): Ладно бы еще дела с оптимизатором шли нормально
Что с ним ненормально? Ты получаешь за него стабильную зарплату? Его нормально воспринимают специалисты за пределами узкого круга заинтересованных лиц? Существует реально 3 продукта - форт как язык для исходника, (даже 4 - СПФ) , оптимизатор и порождённый им код, вопрос- кому интересно это сочетание продуктов? 1. Кому интересен настолько исходник на форте, чтобы выбрать СПФ и удовлетвориться оптимизатором 2. Кому настолько интересен резултат оптимизации, чтобы выбрать исходник на форте 3. ...
[quote="Хищник"][quote="Mihail"]Хищник писал(а): Ладно бы еще дела с оптимизатором шли нормально
Что с ним ненормально?[/quote] Ты получаешь за него стабильную зарплату? Его нормально воспринимают специалисты за пределами узкого круга заинтересованных лиц?[/quote]
Существует реально 3 продукта - форт как язык для исходника, (даже 4 - СПФ) , оптимизатор и порождённый им код, вопрос- кому интересно это сочетание продуктов?
1. Кому интересен настолько исходник на форте, чтобы выбрать СПФ и удовлетвориться оптимизатором 2. Кому настолько интересен резултат оптимизации, чтобы выбрать исходник на форте 3. ...
|
|
|
|
Добавлено: Вс окт 10, 2010 15:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
Mihail писал(а): Хищник писал(а): Ладно бы еще дела с оптимизатором шли нормально
Что с ним ненормально? Ты получаешь за него стабильную зарплату? Его нормально воспринимают специалисты за пределами узкого круга заинтересованных лиц?
[quote="Mihail"]Хищник писал(а): Ладно бы еще дела с оптимизатором шли нормально
Что с ним ненормально?[/quote] Ты получаешь за него стабильную зарплату? Его нормально воспринимают специалисты за пределами узкого круга заинтересованных лиц?
|
|
|
|
Добавлено: Вс окт 10, 2010 15:02 |
|
|
|
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
Хищник писал(а): Самому сделать лень, но просить сделать правило оптимизатора за микроплатеж - побежит с радостью Пока могу и бесплатно. Хищник писал(а): Ладно бы еще дела с оптимизатором шли нормально Что с ним ненормально?
[quote="Хищник"]Самому сделать лень, но просить сделать правило оптимизатора за микроплатеж - побежит с радостью[/quote] Пока могу и бесплатно.
[quote="Хищник"]Ладно бы еще дела с оптимизатором шли нормально[/quote] Что с ним ненормально?
|
|
|
|
Добавлено: Вс окт 10, 2010 14:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
Mihail писал(а): Бывает может, но не хочет. Ага, вот такое помрачение рассудка у него. Самому сделать лень, но просить сделать правило оптимизатора за микроплатеж - побежит с радостью Mihail писал(а): Например, переведя программу с другого языка, вдруг она стала работать медленнее. Не всегда и не для всех ассемблерная вставка желательна. Плохо оптимизирующийся фрагмент может быть маленьким, но встречаться во многих частях программы. Хватит уже фантазировать. Ладно бы еще дела с оптимизатором шли нормально - так нет, но вместо каких-то кардинальных шагов ты упорно пихаешь его во все темы форума, жалуясь на невнимание общественности.
[quote="Mihail"]Бывает может, но не хочет.[/quote] Ага, вот такое помрачение рассудка у него. Самому сделать лень, но просить сделать правило оптимизатора за микроплатеж - побежит с радостью :)) [quote="Mihail"]Например, переведя программу с другого языка, вдруг она стала работать медленнее. Не всегда и не для всех ассемблерная вставка желательна. Плохо оптимизирующийся фрагмент может быть маленьким, но встречаться во многих частях программы.[/quote] Хватит уже фантазировать. Ладно бы еще дела с оптимизатором шли нормально - так нет, но вместо каких-то кардинальных шагов ты упорно пихаешь его во все темы форума, жалуясь на невнимание общественности.
|
|
|
|
Добавлено: Вс окт 10, 2010 13:47 |
|
|
|
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
Хищник писал(а): человек, который в состоянии идентифицировать проблему, и отличить хорошую оптимизацию от плохой, настолько беспомощен, что не решит вопрос самостоятельно? Бывает может, но не хочет. Идентифицировать проблему можно косвенным образом. Например, переведя программу с другого языка, вдруг она стала работать медленнее. Не всегда и не для всех ассемблерная вставка желательна. Плохо оптимизирующийся фрагмент может быть маленьким, но встречаться во многих частях программы.
[quote="Хищник"]человек, который в состоянии идентифицировать проблему, и отличить хорошую оптимизацию от плохой, настолько беспомощен, что не решит вопрос самостоятельно?[/quote]
Бывает может, но не хочет. Идентифицировать проблему можно косвенным образом. Например, переведя программу с другого языка, вдруг она стала работать медленнее. Не всегда и не для всех ассемблерная вставка желательна. Плохо оптимизирующийся фрагмент может быть маленьким, но встречаться во многих частях программы.
|
|
|
|
Добавлено: Вс окт 10, 2010 11:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: По поводу оптимизации кода |
|
|
M |
обсуждение оптимизации вынесено в отдельную тему. |
[mod]обсуждение оптимизации вынесено в отдельную тему.[/mod]
|
|
|
|
Добавлено: Вс окт 10, 2010 08:13 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
Mihail писал(а): С ассемблером лучше не спешить. Предворительно, следует сообщить в конференцию о том, что фрагмент на Форте оптимизируется неважно. Ты сейчас вообще серьезен? По-твоему, человек, который в состоянии идентифицировать проблему, и отличить хорошую оптимизацию от плохой, настолько беспомощен, что не решит вопрос самостоятельно?
[quote="Mihail"]С ассемблером лучше не спешить. Предворительно, следует сообщить в конференцию о том, что фрагмент на Форте оптимизируется неважно.[/quote] Ты сейчас вообще серьезен? По-твоему, человек, который в состоянии идентифицировать проблему, и отличить хорошую оптимизацию от плохой, настолько беспомощен, что не решит вопрос самостоятельно?
|
|
|
|
Добавлено: Вс окт 10, 2010 00:39 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
chess писал(а): если сильно прижмет, то встроенный ассемблер позволит получить предельное ускорение С ассемблером лучше не спешить. Предворительно, следует сообщить в конференцию о том, что фрагмент на Форте оптимизируется неважно.
[quote="chess"]если сильно прижмет, то встроенный ассемблер позволит получить предельное ускорение[/quote] С ассемблером лучше не спешить. Предворительно, следует сообщить в конференцию о том, что фрагмент на Форте оптимизируется неважно.
|
|
|
|
Добавлено: Вс окт 10, 2010 00:23 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
Хищник писал(а): Достижение экстремальной производительности - сложнейшая задача сама по себе, так стоит ли биться в нее лбом, игнорируя все остальное? Так давно никто и не бьется. Peephole оптимизации хватает. А если сильно прижмет, то встроенный ассемблер позволит получить предельное ускорение. Пожалуй только в VFX сильно потрудились видимо им сильно и надо было.
[quote="Хищник"]Достижение экстремальной производительности - сложнейшая задача сама по себе, так стоит ли биться в нее лбом, игнорируя все остальное?[/quote] Так давно никто и не бьется. Peephole оптимизации хватает. А если сильно прижмет, то встроенный ассемблер позволит получить предельное ускорение. Пожалуй только в VFX сильно потрудились видимо им сильно и надо было.
|
|
|
|
Добавлено: Сб окт 09, 2010 23:17 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
chess писал(а): По мере решения своих задач постепенно приходит понимание слабых мест языка. Язык позволяет себя модифицировать(форт именно такой) для их исключения. То есть формируется функция качества конкретной реализации языка, позволяющая гарантированно достигать нужных результатов. Модификация языка для форта это абсолютно нормальный процесс. Только я хотел бы заметить, что не обязательно модифицировать язык "в лоб", да еще с целью стать похожим на кого-то. Достижение экстремальной производительности - сложнейшая задача сама по себе, так стоит ли биться в нее лбом, игнорируя все остальное? Если копить деньги на лимузин, можно ведь в процессе накопления и с голоду помереть. Поэтому периоды модификации должны наступать как определенная реакция на недостатки языка, замеченные при выполнении предыдущего проекта на нем.
[quote="chess"]По мере решения своих задач постепенно приходит понимание слабых мест языка. Язык позволяет себя модифицировать(форт именно такой) для их исключения. То есть формируется функция качества конкретной реализации языка, позволяющая гарантированно достигать нужных результатов. Модификация языка для форта это абсолютно нормальный процесс.[/quote] Только я хотел бы заметить, что не обязательно модифицировать язык "в лоб", да еще с целью стать похожим на кого-то. Достижение экстремальной производительности - сложнейшая задача сама по себе, так стоит ли биться в нее лбом, игнорируя все остальное? Если копить деньги на лимузин, можно ведь в процессе накопления и с голоду помереть. Поэтому периоды модификации должны наступать как определенная реакция на недостатки языка, замеченные [i]при выполнении предыдущего проекта на нем[/i].
|
|
|
|
Добавлено: Сб окт 09, 2010 22:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
Хищник писал(а): Если язык претендует на какую-то сверхэффективность, он очень даже должен, и много чего. Или же не надо претендовать на чужое, а просто четко осознать достоинства и недостатки, и работать с ними соответственно. А то это уже похоже на тихую истерику - в отсутствие результатов начинается нахваливание Форта напропалую, вдруг народ проникнется? Вот честное слово, читая Фидо 5-7 летней давности, можно понять, что при таком подходе никто не проникнется. По мере решения своих задач постепенно приходит понимание слабых мест языка. Язык позволяет себя модифицировать(форт именно такой) для их исключения. То есть формируется функция качества конкретной реализации языка, позволяющая гарантированно достигать нужных результатов. Модификация языка для форта это абсолютно нормальный процесс.
[quote="Хищник"]Если язык претендует на какую-то сверхэффективность, он очень даже должен, и много чего. Или же не надо претендовать на чужое, а просто четко осознать достоинства и недостатки, и работать с ними соответственно. А то это уже похоже на тихую истерику - в отсутствие результатов начинается нахваливание Форта напропалую, вдруг народ проникнется? Вот честное слово, читая Фидо 5-7 летней давности, можно понять, что при таком подходе никто не проникнется.[/quote] По мере решения своих задач постепенно приходит понимание слабых мест языка. Язык позволяет себя модифицировать(форт именно такой) для их исключения. То есть формируется функция качества конкретной реализации языка, позволяющая гарантированно достигать нужных результатов. Модификация языка для форта это абсолютно нормальный процесс.
|
|
|
|
Добавлено: Сб окт 09, 2010 22:26 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
chess писал(а): Насмешили. Язык геморрою ничего не должен. Если язык претендует на какую-то сверхэффективность, он очень даже должен, и много чего. Или же не надо претендовать на чужое, а просто четко осознать достоинства и недостатки, и работать с ними соответственно. А то это уже похоже на тихую истерику - в отсутствие результатов начинается нахваливание Форта напропалую, вдруг народ проникнется? Вот честное слово, читая Фидо 5-7 летней давности, можно понять, что при таком подходе никто не проникнется.
[quote="chess"]Насмешили. Язык геморрою ничего не должен. [/quote] Если язык претендует на какую-то сверхэффективность, он очень даже должен, и много чего. Или же не надо претендовать на чужое, а просто четко осознать достоинства и недостатки, и работать с ними соответственно. А то это уже похоже на тихую истерику - в отсутствие результатов начинается нахваливание Форта напропалую, вдруг народ проникнется? Вот честное слово, читая Фидо 5-7 летней давности, можно понять, что при таком подходе никто не проникнется.
|
|
|
|
Добавлено: Сб окт 09, 2010 20:17 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
mOleg писал(а): Тройки из четверок получаются просто (только количество этих самых троек возрастает в два раза по отношению к четверкам и количество использованных регистров тоже увеличивается). Однако с ix86 платформой это пофигистично, т.к. есть и 0 операндные команды, а есть и трехоперандные. Именно с x86 это не пофигистично, в силу немалой асимметрии в системе команд. Удобно, когда есть 32 регистра по 32 разряда, и команды могут выполняться над любыми их сочетаниями. А когда непонятно, положить результат в ecx (а вдруг потом будет цикл, и нужен jecxz), или в edx (а вдруг mul или in/out), надо специально озаботиться описанием соответствующих правил и зависимостей. Кстати, LEA - это не вполне удачный пример, поскольку речь идет о сложной адресации одного операнда, а не о двух операндах с независимым регистром назначения. И задача оптимизации для x86 - воспользоваться повышенной эффективностью операций над регистрами, положив туда все необходимое при возможно меньшем трафике с памятью. Если процессор 3 ГГц, а память - 1,066, то сам факт работы с памятью уже толстый намек на потерю эффективности. И вот тут становится очень важным, насколько велики возможности процессора по перекладыванию уже прочитанных из памяти данных между своими регистрами.
[quote="mOleg"]Тройки из четверок получаются просто (только количество этих самых троек возрастает в два раза по отношению к четверкам и количество использованных регистров тоже увеличивается). Однако с ix86 платформой это пофигистично, т.к. есть и 0 операндные команды, а есть и трехоперандные.[/quote] Именно с x86 это не пофигистично, в силу немалой асимметрии в системе команд. Удобно, когда есть 32 регистра по 32 разряда, и команды могут выполняться над любыми их сочетаниями. А когда непонятно, положить результат в ecx (а вдруг потом будет цикл, и нужен jecxz), или в edx (а вдруг mul или in/out), надо специально озаботиться описанием соответствующих правил и зависимостей. Кстати, LEA - это не вполне удачный пример, поскольку речь идет о сложной адресации одного операнда, а не о двух операндах с независимым регистром назначения. И задача оптимизации для x86 - воспользоваться повышенной эффективностью операций над регистрами, положив туда все необходимое при возможно меньшем трафике с памятью. Если процессор 3 ГГц, а память - 1,066, то сам факт работы с памятью уже толстый намек на потерю эффективности. И вот тут становится очень важным, насколько велики возможности процессора по перекладыванию уже прочитанных из памяти данных между своими регистрами.
|
|
|
|
Добавлено: Сб окт 09, 2010 20:11 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
dynamic-wind писал(а): Олег, чтобы эффективно (и без лишнего геморроя) оптимизировать, язык должен иметь простую и четкую семантику. Насмешили. Язык геморрою ничего не должен.
[quote="dynamic-wind"]Олег, чтобы эффективно (и без лишнего геморроя) оптимизировать, язык должен иметь простую и четкую семантику.[/quote] Насмешили. Язык геморрою ничего не должен. :))
|
|
|
|
Добавлено: Сб окт 09, 2010 18:29 |
|
|
|
|
|
Заголовок сообщения: |
Re: Ответ на чат :) |
|
|
mOleg писал(а): dynamic-wind писал(а): -без сборки мусора,pattern-matching'a и других вкусностей. этого я вообще не понял (к чему это относится, к устройству оптимизатора, или к оптимизируемому коду?) К устройству компилятора, конечно. mOleg писал(а): dynamic-wind писал(а): Олег, чтобы эффективно (и без лишнего геморроя) оптимизировать, язык должен иметь простую и четкую семантику. зачем? Когда есть четверки\тройки, уже пофигу семантика языка. Тенденция, однако: высокоуровневые оптимизации выполнять над промежуточным представлением, что ниже входного языка, но выше всяких троек-четверок. (Замумукаешься описывать некоторые преобразования в терминах троек-четверок, и сложность алгоритмов типа O(N^3) дасть о себе знать, когда N велико) mOleg писал(а): речь идет о том, что оптимизация в форте должна быть локальной (т.е. оптимизируем последнее созданное определение), такие куски кода обычно невелики, и там практически нечего крутить много раз. Понятно, что тут будет своя специфика. Ну раз должна быть... ничего не попишешь. Но многие возможности для оптимизации не проявятся без подстановки. И программист будет вынужден нарушать парадигму форта (и не только форта) "много коротких определений" в погоне за быстродействием.
[quote="mOleg"] [quote="dynamic-wind"]-без сборки мусора,pattern-matching'a и других вкусностей.[/quote] этого я вообще не понял (к чему это относится, к устройству оптимизатора, или к оптимизируемому коду?) [/quote]К устройству компилятора, конечно.
[quote="mOleg"] [quote="dynamic-wind"]Олег, чтобы эффективно (и без лишнего геморроя) оптимизировать, язык должен иметь простую и четкую семантику.[/quote] зачем? Когда есть четверки\тройки, уже пофигу семантика языка.[/quote] Тенденция, однако: высокоуровневые оптимизации выполнять над промежуточным представлением, что ниже входного языка, но выше всяких троек-четверок. (Замумукаешься описывать некоторые преобразования в терминах троек-четверок, и сложность алгоритмов типа O(N^3) дасть о себе знать, когда N велико)
[quote="mOleg"]речь идет о том, что оптимизация в форте должна быть локальной (т.е. оптимизируем последнее созданное определение), такие куски кода обычно невелики, и там практически нечего крутить много раз. Понятно, что тут будет своя специфика.[/quote] Ну раз [i]должна[/i] быть... ничего не попишешь. Но многие возможности для оптимизации не проявятся без подстановки. И программист будет вынужден нарушать парадигму форта (и не только форта) "много коротких определений" в погоне за быстродействием.
|
|
|
|
Добавлено: Сб окт 09, 2010 18:16 |
|
|
|
|