LINUX.ORG.RU
ФорумTalks

Оптимизация кода: программы


0

1

Если оптимизаторы кода? Например, в подсунутом файле оптимизирует математику, удаляет неиспользуемые переменные, разворачивает цыклы...

Что то по типу GCC с флагами оптимизации но с исходным текстом?

Если нет, то возможно ли такое в теории/практике?

★★★★

Последнее исправление: ymuv (всего исправлений: 1)

Лишено смысла. Высокоуровневые языки для того и нужны, чтобы не загромождать код низкоуровневыми хаками типа «оптимизирует математику, разворачивает цыклы».

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

> Высокоуровневые языки для того и нужны, чтобы не загромождать код низкоуровневыми хаками типа «оптимизирует математику, разворачивает цыклы».
4.2, есть llvm(clang).(Cpp -> низкоуровневый(почти ассемблер) байт код -> нативщина.)

tn1
()
Ответ на: комментарий от dinn

Насколько я понял, товарищ ТС хочет продолжать писать быдлокод, но при этом чтоб умная программка все его косяки типа «удаляет неиспользуемые переменные, разворачивает цыклы» правила на лету, прежде чем отдавать заказчику и компилятору.

adriano32 ★★★
()

Ещё есть суперкомпилятор(оптимизирует высокоуровневые конструкции).

tn1
()
Ответ на: комментарий от tn1

> 4.2

В каком месте?

есть llvm(clang)


Ну и что с того?

Cpp -> низкоуровневый(почти ассемблер) байт код -> нативщина.


Такое чувство, что ты накурился. Причем тут нативщина? ТС-а интересует схема «cpp -> чудо-компилятор -> cpp». Какой вообще смысл из байткода хреначить назад в cpp?

Manhunt ★★★★★
()

Статический анализатор кода?

kovrik ★★★★★
()

Тогда бы программисты были не нужны. Составил запрос - оптимизатор выдал готовый код.

vurdalak ★★★★★
()
Ответ на: комментарий от Manhunt

> Такое чувство, что ты накурился.
Да.
Действительно не в тему, сори.

tn1
()
Ответ на: комментарий от vurdalak

Составил запрос - оптимизатор выдал готовый код.
Тогда бы программисты были не нужны.

Мильон раз же уже обсосали эту тем. Тогда бы все равно нужны были программисты, но они бы вбивали запросы.

dizza ★★★★★
()
Ответ на: комментарий от dizza

Тогда бы все равно нужны были программисты, но они бы вбивали запросы.

Это не программисты, а составители ТЗ.

vurdalak ★★★★★
()

Для оптимизации юзайте profiler. Посмотрели, что эта функция/строка кода жрёт непомерно ресурсов - оптимизнули, снова посмотрели.

Sadler ★★★
()
Ответ на: комментарий от segfault

>А аффтар хочет быдлокод автоматом заметать.

Быдлокод я не пишу (надеюсь). Просто иногда просят что-то доделать/переделать, разбираешь код, приходится 30-50% переписывать хотя-бы для нормальной читабельности.

ymuv ★★★★
() автор топика
Ответ на: комментарий от segfault

> А аффтар хочет быдлокод автоматом заметать.

Вообще не так это и фантастично, простой синтаксический анализатор + набор правил. Но вот все ипостаси быдлокода распознать нереально. Помню, я долго избавлял один код от #ifdef 0 и #ifdef 1 ... Даже при том, что я написал анализатор этого дела, понимающий уровни вложенности и комментарии.

Sadler ★★★
()

возможно ли такое в теории/практике?

конечно возможно. Но нет особого смысла т.к. сложно ибо исходники оптимизированы для работы человека, а компилеры сначала транслируют их в промежуточное представление с которым уже работают.

true_admin ★★★★★
()

для С задача нерешаема, ввиду препроцессора. То есть теоретически сделать можно, но результат будет мягко говоря нечитаемым, хоть и рабочим.

но есть splint и прочие статические анализаторы которые могут подсказать что подправить или указать на «скользкие» места в коде.

p.s. Конвертер c->c для исправления дел рук программиста, конечно бред.

Хотя высокоуровневая оптимизации и конверсия языков - непаханное золотое поле. И интерес к этому периодически проявляют даже монстры индустрии.

MKuznetsov ★★★★★
()
Ответ на: комментарий от vurdalak

Получение софта из ТЗ AI-полная задача. За не имением AI ТЗ требует формализации по трудозатратам равным написанию конечного кода.

dizza ★★★★★
()

У нас был один проект, который этим и занимался... Меня там не было, но суть в следующем: есть процессоры одной архитектуры, в которых есть блок умножения с накоплением. Компиляторы его не юзали. Создавался препроцессор С/С++, который находил в коде характерные куски (типа БПФ) и заменял их асмовыми вставками с использованием этого модуля.

А дальше заказик предложил протестить проект и дал код mplayer'а. А там циклы были уже развернуты и прога не среагировала. Проект закрыли:) Мораль: такие проекты - говно, т.к. они всё не соптимизируют, а писать определенным образом, чтобы препроцессор реагировал почти эквивалентно ручной оптимизации (т.е. не имеет смысла).

Pavval ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.