Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет superhuman ([info]superhuman)
@ 2017-01-13 21:47:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
А затюнингованная под камень прога работает чуть медленней даже, чем женерик код. Чо за хуйня?

Думал вздрючить гэцэцэ, налабав ядро той задачи на асме. Компилятор ведь железный, читай, тупой.

Переписал ядровую функцию на асме. И раз в моём проце добавили специализированные битовые инструкции, заюзал их. Конкретно BEXTR из BMI. Особые инструкции это ведь круто и быстро, не так ли?

Хуяк - в 2 раза медленнее, чем gcc. Блядь, чо за хуйня? Смотрю, что гцц сгенерил, и вижу, что он не использует никакого BMI, хотя тюнинг под нативную архитектуру включен.

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

Ладно, переписал на женерик битовые шифты. Быстрее, да. Но не быстрее, чем gcc. В полтора раза медленней. Бляяяядьь. Опять втыкаю в дизассемблер (ну, точнее, в gcc -S), сравниваю. Нету разницы! Только, блядь, порядок инструкций. В общем, сосанул у gcc - робот победил человека.

Скорее всего, гцц знает (интересно, по результатам экспериментов или по мануалам на процы, или у них кооперация с АМД?) как надо под out of order execution оптимизировать. Ёбаный OoOE, даже малейшее переставление инструкций играет роль. Ёбаные современные процы с их пайплайнами, не поймёшь ни хрена. Разве что 5 тысяч страниц мануалов их прочесть. И то, не уверен, что OoOE полность описан, скорее всего, коммерческая тайна.


(Добавить комментарий)


[info]666
2017-01-14 01:49 (ссылка)
>не уверен, что OoOE полность описан, скорее всего, коммерческая тайна

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

(Ответить) (Ветвь дискуссии)


[info]phantom
2017-01-14 01:59 (ссылка)
Я думаю, не автоматически, но годы траханья бенчмарков и эвристической адаптации этих правил вывели гцц вперёд. Хотя можно поискать инфу на эту тему. Или гццэшников поспрашивать.

(Ответить) (Уровень выше)


[info]phantom
2017-01-14 02:01 (ссылка)
А, вообще, именно концепт такой существует - автоматического вывода оптимизации в рантайме. Называется суперкомпиляция или, иногда, метакомпиляция. Довольно трендовая сейчас мулька.

(Ответить) (Уровень выше)


(Анонимно)
2017-01-14 02:11 (ссылка)
>компилятор тупой

как там у вас, в 2000-м?

(Ответить) (Ветвь дискуссии)


[info]phantom
2017-01-14 03:21 (ссылка)
Ну, блядь, а ты кто? Профессионал в компиляторах?

(Ответить) (Уровень выше)