Перейти к содержанию
    

Оптимизация в компиляторе. Нужна или нет?

1 hour ago, AlexandrY said:

Я бы спросил, что это за исходники которые при максимальной оптимизации начинают сбоить.

ну, неапример, у меня сбоила библиотека fat32 на блекфине с оптимизацией

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поддерживаю ораторов, утверждающих, что работоспособность программы не зависит от уровня оптимизации компилятора. А от уровня разработчика - зависит. :biggrin: 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

без оптимизации получается именно то, что написано в программе

причем уверен, что разные компиляторы могут наоптимизировать по разному

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

Just now, ViKo said:

Поддерживаю ораторов, утверждающих, что работоспособность программы не зависит от уровня оптимизации компилятора. А от уровня разработчика - зависит. :biggrin: 

Я бы сказал что чем ниже уровень разработчика тем более работоспособность программы зависит от уровня оптимизации компилятора :yes3:

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, inventor said:

без оптимизации получается именно то, что написано в программе

С оптимизацией так-же получается именно то, что написано в программе. Поэтому и вопросы всегда не к оптимизатору, а к содержимому

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 минут назад, artemkad сказал:

С оптимизацией так-же получается именно то, что написано в программе. Поэтому и вопросы всегда не к оптимизатору, а к содержимому

Прям в точку!  :biggrin:

А есть ещё мудрая басня про мартышку и очки. Не буду её приводить, а то боюсь - опять оскорблю чьи-то ранимые чувства.... :russian_ru:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Herz said:

Другое дело - оскорбления. Но автора здесь никто не оскорблял.

Не надо поднимать уровень токсичности форума.
Я за нулевую толерантность к личным выпадам.  

1 hour ago, inventor said:

ну, неапример, у меня сбоила библиотека fat32 на блекфине с оптимизацией

Речь о FatFS? 
У меня FatFS на максимальной оптимизации работала всегда идеально. И на ARM и на Atmel.
Скорее всего проблема была ниже FatFS или выше. 
Дайте еще примеры. 
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

оптимизация иногда раздувает размер кода подстановкой функций

была неправильная оптимизация с плавающей точкой на TI. 

1 hour ago, artemkad said:

С оптимизацией так-же получается именно то, что написано в программе. Поэтому и вопросы всегда не к оптимизатору, а к содержимому

нет не то.

без оптимизации я получаю такой же код как описан в самой программе

то есть я буду уверен, что он не развернет циклы, не подставит функции 

если подсчитает что они маленького размера и можно их сделать inline

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

Прям в точку!  :biggrin:

А есть ещё мудрая басня про мартышку и очки. Не буду её приводить, а то боюсь - опять оскорблю чьи-то ранимые чувства.... :russian_ru:

как то прочитал (не помню где) что крупные комерческие проекты делают с оптимизацией -o2

типа LibreOffice и подобные, при оптимизациях больше они просто перестают работать

по всей вероятности код, который вы пишете не превышает пары сотни строк

в этом случае конечно можно отследить и ошибки и постаивть оптимизацию -o3 или -oS

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, inventor said:

как то прочитал (не помню где) что крупные комерческие проекты делают с оптимизацией -o2
типа LibreOffice и подобные, при оптимизациях больше они просто перестают работать

Нынче и слабенькая програмка под Win10 типа складской будет по количеству строк не уступать LibreOffice, ибо будет включать всю функциональность офиса и еще плюс базы данных и сетевые стеки.
Так вот такие программы всегда компилятся в двух конфигурациях: отладочной и релизной. Отладочная имеет минимальную оптимизацию,  релизная имеет максимальную.
И это нонсенс если отладочная работает, а релизная нет. 

Компиляция под максимальной оптимизацией - обязательный этап в ходе тестирования ПО. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, inventor said:

как то прочитал (не помню где) что крупные комерческие проекты делают с оптимизацией -o2

типа LibreOffice и подобные, при оптимизациях больше они просто перестают работать

Так коммерческие, или LibreOffice?

-o3 в случае gcc очень сильно увеличивает размер при незначительном выйгрыше по быстродействию.

Работать ничего не перестанет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, aaarrr said:

Так коммерческие, или LibreOffice?

-o3 в случае gcc очень сильно увеличивает размер при незначительном выйгрыше по быстродействию.

Работать ничего не перестанет.

а какже undefined behavior?

что там компилятор наоптимизирует в этом случае, не будет ли он сам решать где что упростить

и где какие части кода поменять местами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, inventor сказал:

без оптимизации я получаю такой же код как описан в самой программе

то есть я буду уверен, что он не развернет циклы, не подставит функции 

Что значит "такой же"?

В программе написано: for (int i = 0; i < N; i++) { arr = i; } 

что по Вашему должен подставить ассемблер? В ассемблере нет команды for. Тогда что значит "такой же"?

Код for (int i = 0; i < N; i++) { arr = i; } говорит компилятору, что программа должна заполнить N элементов массива arr их индексами. Как и с помощью каких ассемблерных команд это будет сделано - дело компилятора. Хоть это будет какой-то цикл, хоть  линейный код, хоть копирование из const-памяти - без разницы. Если Вам принципиально, чтобы это были определённые команды - пишите на ассемблере.

19 минут назад, inventor сказал:

а какже undefined behavior?

Это означает что си-шный исходник - кривой. И его надо исправить. Компилятор прав.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, jcxz said:

Это означает что си-шный исходник - кривой. И его надо исправить. Компилятор прав.

править стек lwip или что то подобное? (как пример)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, inventor said:

править стек lwip или что то подобное? (как пример)

А почему нет? Не всегда все можно собрать в кучу без единого патча.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...