LINUX.ORG.RU

Есть ли сейчас в смысл заниматься тонкой оптимизацией сборки программ?

 , , ,


0

1

Раньше, когда еще не было столько виртулизации в ПО, различного рода абстракций и наслоений в архитектуре, а программисты пытались как можно лучше адаптировать код к производительности, такой подход, как оптимизация CFLAGS флагов сборки под конкретный процессор оправдывал себя и задавало соотвествующий выхлоп. А сейчас?! Хороших программистов стало крайне мало, количество различного рода микроархитектур стремится к бесконечности, а на задействующие ресурсы, при использование ПО на стороне пользователя - плевать, как снежный ком нарастает зависимость пакетов при сборки и тд. Стоит ли вообще этим заниматься?!

Перемещено hobbit из general


тебе сложно один раз настроить CFLAGS, что задался таким вопросом?

xmikex ★★★★
()

Разумеется всё зависит в основном от того ПО которое ты пишешь. Хотя уже автоматические оптимизации непонятно почему-бы и не включить, там трудозатраты околонулевые.

pon4ik ★★★★★
()

такой подход, как оптимизация CFLAGS флагов сборки под конкретный процессор оправдывал себя

Большинству достаточно -march=native -O2.
А всё, что выше, чем -march=native -O3 -ffast-math -ftree-vectorize, бесполезно.
Достаточно почитать тесты похороникса.

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

Плюсую, самая волшебная опция -march=native, но бинарники становятся плохо переносимыми с одного пк на другой

sparks ★★★★
()

Хороших программистов стало крайне мало

Ага, при этом в код написаный в 80-90х страшно смотреть из-за испанского стыда. Где эти прекрасные гении подарившие нам Windows 98 и 1С Бухгалтерию.

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

Стоит ли вообще этим заниматься?!

А ты хочешь быть хорошим программистом или плохим?

То, что инструменты становятся проще и доступнее - это очень хорошо. Пока еще мы платим за это производительностью. Когда-то наступит момент равновесия, а потом резко начнет нарастать спрос на «хороших» программистов. Это может случиться уже завтра. Или через 20 лет. Сказать трудно. Так что все сводится к моему первому вопросу.

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

Примеров не хватает.

И да, все-таки надо делать поправку на зачаточное по сути развитие программирования тех годов.

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

код написаный в 80-90х страшно смотреть из-за испанского стыда.
Где эти прекрасные гении подарившие нам Windows 98

Покажи, что именно тебя смущает в исходном коде Windows 98?

LamerOk ★★★★★
()

Перестал замечать разницу от компилирования с разными флагами ещё лет 15-16 назад. Тогда же и перестал компилировать всё вручную. Сейчас, если что и изменилось, то скорее всего в том, что даже в бенчмарках увидеть разницу будет сложно.

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

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

NT/2000 были как послание богов

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Результаты работы кода не устраивают

Так это проблемы не кода, а архитектуры ОС.

были как послание богов

Ага, NT4 без PnP по сравнению с Win95

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

падения,

И ты можешь привести дампы падений, произошедших по причине багов в коде ОС, а не драйверов / железа, м-м-м?

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

1. Что за бред я прочитал?
2. Где конкретные строчки кода, к которому есть претензии?

NT/2000 были как послание богов

Первая копия «послания богов» жрала раза в два больше ресурсов и тормозила на играх до двух раз в сравнении с 95/98. Вторая копия умудрялась тормозить и без игр на обычном GDI-интерфейсе.

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

В твоём манямирке программисты сами себе формулируют требования для выхода продукта на рынок? Это объясняет, почему ты безработный.

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

Где

Не моя задача восполнять пробелы твоей необразованности. Хочешь узнать - ищи. Хочешь заблуждаться завтра - твое право

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

код написаный в 80-90х страшно смотреть из-за испанского стыда.
Не моя задача

Твоя. Ты высрал бредовый тезис - тебе его доказывать. И пока что ты сливаешься в сортир со сверхзвуковой скоростью.

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

Это объясняет, почему ты безработный

Садись, два по троллингу. Чтобы задело нужно троллить правдой. Если у человека лишний вес - троллишь что он жирдяй.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от LamerOk

Где конкретные строчки кода, к которому есть претензии?

Очень смешно! Спроси у MS.

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

именно ответственность программистов

Архитектора ПО, а не программиста. Он может даже не уметь код писать, это не его задача.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от LamerOk

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Я так понимаю, кода, на который «страшно смотреть из-за испанского стыда» мы так и не увидим, балаболка?

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

Обратный пример - реактось. У которой архитектура NT, но говнокод свой)

devl547 ★★★★★
()

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

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

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

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

-march=native -O3 -ffast-math

-Ofast давно есть

всё, что выше, чем

4.2 -fprofile-generate -fprofile-use дают заметный прирост. -flto тоже может что-то дать.

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

совсем не сложно, но не везде, потому что многий софт нормально оптимизирован уже искоробки

anonymous
()

Есть ли сейчас в смысл заниматься тонкой оптимизацией сборки программ?

Если ресурсы позволяют и есть желание — стоит.

Так-то универсального ответа на этот вопрос нет. Зависит от того, работаешь ты на заказчика, на коробочный продукт, или пишешь Just for fun. От того, для чего нужен твой продукт: для управления дроном или для вытаскивания кулинарного рецепта из базы.

Но хочу заметить, что ориентация только на топовые компы уныла. На мой взгляд, программа, разрабатываемая для десктопа, по-хорошему обязана отзывчиво работать на Raspberry Pi 3. Разумеется, есть программы, чья тормознутость обусловлена внешними факторами, и с этим трудно что-то сделать (да, я в первую очередь про браузеры для современного говновеба).

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

И где тут проблема в коде? Что именно в одной единственной строчке кода вызвало столь глубокие душевные страдания? М-м-м?

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

А ты хочешь быть хорошим программистом или плохим?

Кстати да. Зависит от этого. :)

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

а не надо ими заниматься, можно просто периодически тестировать с -march=native -Ofast / -O3. а то некоторые понаговнокодят, а потом прописывают -fno-stirct-aliasing (хотя есть -Wstirct-aliasing)

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

Ахаха, божемой какой ты тупоголовый. Там просто все прямым текстом написано.

Я был прав что углубляться с тобой в конкретику - трата времени, а конкретнее не бывает чем привести сигнатуру функции которую только полный баран мог изобрести

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

Хороших программистов стало крайне мало

чё серьёзно?

на задействующие ресурсы, при использование ПО на стороне пользователя - плевать

на пользователя который не платит было всегда плевать

Стоит ли вообще этим заниматься?!

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

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

привести сигнатуру функции

И в чём проблема с сигнатурой, м-м?

только полный баран мог изобрести

Ну, раз ты такой умный, предложи другую сигнатуру для этой функции, с тем, чтобы она решала ту же задачу тем же образом.

Я - весь внимание.

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

Самое простое - не делать эту функцию вообще. Просто оставить все как есть и автоматически получить не такую поехавшую ОС. Вместо того чтобы родить это говно можно было делать что угодно - выпить пива, заняться спортом, сходить в кино.

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

Самое простое - не делать эту функцию вообще

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

Я жду сигнатуру-функции-не-говнокод, решающую эту задачу.

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

Теперь я понял, почему ты безработный.

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

Пруф что заказчик это просил. Гугли «XY Problem»

Крутой заказчик. А заказчик не просил чтобы троянов потом не было столько сколько всегда было в 98ой?

Ой, не знаю как современные ОС живут без этой говно функции и даже в Винде ее выпилили

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

программисты пытались как можно лучше адаптировать код к производительности

Не больше и не меньше чем сейчас.

такой подход, как оптимизация CFLAGS флагов сборки под конкретный процессор оправдывал себя и задавало соотвествующий выхлоп

Это не имеет никакого отношения к «адаптации кода к производительности» о котором ты говоришь в предыдущем предложении (что намекает на непонимание темы). И программисты этим никогда не занимались, этим занимались пользователи Gentoo (ну и в меньшей степени других source-based дистрибутивов). И да, сейчас достаточно сделать -march=native.

Оптимизацией кода сейчас занимаются не меньше и не больше чем «раньше». Хорошие программисты - там где доподлинно известно что есть боттлнек, плохие - где придётся.

А сейчас?! Хороших программистов стало крайне мало

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

как снежный ком нарастает зависимость пакетов при сборки и тд.

Зависимость пакетов - это reuse кода. Чем больше он нарастает тем лучше.

Стоит ли вообще этим заниматься?!

Если ты не отличаешь оптимизацию исходного кода от оптимизации машинного кода и не понимаешь где она нужна а где нет, то точно не стоит. Пиши простой код и учись.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 4)
Ответ на: комментарий от vertexua

Результаты работы кода не устраивают - падения

Сколько лет разрабатывался windows 98? А, например, KDE?

thesis ★★★★★
()

оптимизация CFLAGS флагов

Это не оптимизация. Пример настоящей оптимизации видел в реализации fat для avr (goto и прочее уродование кода… но результат, результат того стоил).

Стоит ли вообще этим заниматься?

Забей.

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

-ffast-math

Да да, и первый же случившийся nan потенциально выносит логику чужой апликухи к чёрту. Ну, кактусы у всех не отберёшь…

bugfixer ★★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от LamerOk

Все правильно, Майкрософт ее сами придумали потому что не хватило ума решить задачу пользователя умнее. И задача пользователя не была облегчить писать вирусы.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua
Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long

Эт у какого языка такие декларации? Я школьник что-то такого не помню.

apt_install_lrzsz ★★★
()

а на задействующие ресурсы, при использование ПО на стороне пользователя - плевать

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

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