[devel] Оптимизированные для i686 и выше библиотеки.

Alexander Bokovoy ab на altlinux.org
Пт Сен 3 17:24:31 UTC 2010


2010/9/3 Alexey Tourbin <at на altlinux.ru>:
> Я и говорю, давайте покажем, чего мы добиваемся.  А то понимаешь развели
> тут тред, оптимизированные для i686 библиотеки.  Можно подумать за это
> на премию можно выдвинуть.  Пробуешь разобраться, спрашиваешь людей,
> сколько у вас процентов вышло?  Люди подозрительно молчат, mike спрашивает
> "тебе жалко что ли"?  thresh хотя бы честно замерил и написал, что там
> выходит около одного процента в лучше случае (а на атомах - меньше).
> Мне не жалко, но просто страдать по этому поводу я не собираюсь - нет смысла.
В MeeGo долго энтузиасты пытались убедить товарищей из Интела, что
нужно поддерживать что-нибудь, не поддерживающее SSSE3 (ниже
Core2Duo). Интел, понятное дело, гнет свою палку. Phoronix в мае делал
сравнение четырех дистрибутивов на нетбуке, для меня единственным
значимым различием было почти четырехкратное ускорение загрузки
дистрибутива по сравнению с Fedora 13 (8 секунд против 23), но это
скорее заслуга btrf и меньшего количества сервисов, чем аппаратного
ускорения. Сравнение делалось на одном и том же нетбуке.
http://www.phoronix.com/scan.php?page=article&item=meego_10_perf&num=1

Однако тут важным моментом будет наличие грамотно векторизующего
компилятора. Интеловский компилятор в среднем позволяет отбить 13-15%
при соблюдении ряда специальных манипуляций с кодом (прагмы и проч.),
вырастая и в два-три раза при удачных случаях. Но некоторые из этих
оптимизаций были добавлены только в GCC 4.5 и все равно они уступают
интеловскому компилятору. А ручной оптимизации уступает все подряд.

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

Сегодня коллега ускорил в три с половиной раза собственный код:
http://maemo.gitorious.org/meego-image-editor/libquill/commit/aba7db8a8fcb8474d9107dcd9e142f18d07b51bf,
как можно увидеть, никакими аппаратными оптимизациями там и не пахнет.
Это при том, что и так чтение thumbnail было в рамках приличия.

Практика показывает, что верить в "у нас тут код вручную оптимизирован
под SSE" на x86 микроархитектурах становится крайне неблагодарным
занятием. Микроархитектуры плывут по поддерживаемому функционалу и
особенности их реализации иногда убивают все прошлые оптимизационные
заслуги.

-- 
/ Alexander Bokovoy


Подробная информация о списке рассылки Devel