LINUX.ORG.RU

Какие варианты оптимизации приложений на системном и сетевом уровне в Linux.


0

1

Здравствуйте. Подскажите, какие существуют варианты оптимизации производительности программ по времени выполнения и по использованию памяти, сетевого стека в высоконагруженных приложениях на системном уровне в Linux? Язык программирования-Си.

★★

Сам проходи свои собеседования, пёс.

anonymous
()

Каков вопрос, таков ответ: минимизировать кол-системных вызовов, асинхронная архитектура, cache-friendly programming, стараться лишний раз не дёргать malloc/free....

Ну и профайлинг, нагрузочное тестирование.

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

Что из моих советов не заработает на линуксе? Кто сказал что нельзя использовать, например, libev и не заморачиваться многими линукс-специфичными костылями?

true_admin ★★★★★
()

оптимизации производительности программ по времени выполнения

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

Второе лечится в основном асинхронными вызовами. Первое — сперва алгоритмически, затем трюками языка или ассемблерными вставками.

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

Не обращайте внимания, это весна.

А вам спасибо за ответ)

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

Правильно, но задача, насколько я понимаю-это выполняющийся код программы. И время выполнения и реакции на события актуально для любой среды, и конкретно GUI тут не при чем.

А как же параллелизм выполнения задач, потоки итд?

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

Правильно, но задача, насколько я понимаю-это выполняющийся код программы.

Нет. Задача — это, например, архивация моей коллекции фоточек и смешных картинок. Различные архиваторы дают разное время, да и один архиватор на разных ядрах либо скомпилированный разными компиляторами / с разными опциями может показывать разную скорость.

И время выполнения и реакции на события актуально для любой среды, и конкретно GUI тут не при чем.

Идеализм в программировании неуместен. GUI тут при том, что если приложение никак не отвечает на действия пользователя — оно зависло, и не волнует, что оно там внутри считает (со стороны человека не видать разницы). А ведь не так уж и сложно сделать напрочь заоптимизированные рассчёты, но забыть вынести их в отдельный поток и показывать прогресс (не забывая апдейтить этот прогресс от лица выполняющего задачу потока).

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

1) А архиватор это разве не программа, которая запускает процесс архивации? Конечно программа!))) Также как и ЛЮБОЙ процесс в системе.

2) Причем тут идеализм? Вы просто не понимаете самых основ прогаммирования, а также смысл понятий таких базовых параметров, как время реакции, выполнения и события. Вас не в ту степь несет.

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