The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..." +4 +/
Сообщение от Orduemail (ok), 13-Фев-18, 16:06 
>> blah-blah
> То есть писать быстрый и компактный код теперь уже не модно, я
> правильно понял основную мысль?

Нет не правильно. Сегодня как раз модно писать быстрый и компактный код, но сегодня быстрый и компактный код быстрее и компактнее чем то, что есть в exim. Скажем очень полезно использовать for'ы и индексы, вместо адресной арифметики -- компилятору будет проще разобраться в происходящем, и может быть компилятор, например, векторизует код, и будет при выделении токена тратить меньше одного такта процессора на символ строки. А если он не векторизует, то вынос всех этих циклов перебора char'ов в отдельные функции, позволяет программисту измываться над этими циклами как угодно, хоть векторизовать руками. Пока же повторное использование кода достигается копипастом, попытки написать более сложный и более быстрый код упрутся в то, что придётся каждый эпизод копипаста переписывать ручками, привнося тучи багов, которые отлавливать будут использованием в продакшне.

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

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

А компактным его код совершенно определённо называть не стоит. Мой код больше, но если ты присмотришься, там 90% уходит в библиотеку и будет использоваться неоднократно. То есть, если в этом стиле переписать весь exim, то кода станет меньше. Вероятно можно взять и переписать только вон ту функцию парсинга конфига, и уже тогда станет видно сокращение размера. Но с учётом того, что exim парсит не только конфиги, а довольно много чего, и весь парсинг в exim можно перевести на использование библиотечного кода для парсинга, то общий размер кода занятого парсингом можно сократить таким образом в разы.
Кроме того, у библиотеки состоящей из маленьких и повторно используемых функций есть ещё один бонус: её возможно покрыть тестами. Вот его код покрывать тестами ты убьёшься.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..., opennews, 11-Фев-18, 09:33  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру