[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