The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Опубликован код ядра и ряда GNU-утилит для платформы Эльбрус 2000, opennews (??), 20-Авг-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


412. "Опубликован код ядра и ряда GNU-утилит для платформы Эльбрус..."  +1 +/
Сообщение от n00by (ok), 24-Авг-22, 09:13 
Я просто вырву оттуда первую попавшуюся цитату

"""
Например, чтобы получить некоторую интуицию проблемы с инлайном, не погружаясь сильно глубоко в сложные технические детали, давайте рассмотрим простейший синтетический код:

int get_inc_val () { return 3; };
...
int a=0;
while (a < 10000)
{
   a+=get_inc_val();
}
...

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

Если в данном цикле вызов функции get_int_val по какой-то причине не заинлайнится компилятором, то для RISC/CISC архитектуры с OoO итерация цикла будет занимать ~1 такт(P.S. после публикации статьи проверка на реальном коде показала 3 такта), не отличаясь принципиально от случая, если инлайн сработал.
"""

А вот первая попавшаяся релевантная цитата из IA32 Optimization Manual

Assembly/Compiler Coding Rule 5. (MH impact, MH generality) Selectively inline a function if
doing so decreases code size or if the function is small and the call site is frequently executed.

Интел пишет, что приведённая как пример функция должна быть заинлайнена. Как минимум, данный пример не годный. Моя интуиция подсказывает, что там можно ещё таких найти.

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

435. "Опубликован код ядра и ряда GNU-утилит для платформы Эльбрус..."  +/
Сообщение от Михрютка (ok), 24-Авг-22, 22:17 
> Интел пишет, что приведённая как пример функция должна быть заинлайнена. Как минимум,
> данный пример не годный. Моя интуиция подсказывает, что там можно ещё
> таких найти.

спасибо.

можно такой же пример с инлайном, но для джавы?

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

442. "Опубликован код ядра и ряда GNU-утилит для платформы Эльбрус..."  +/
Сообщение от n00by (ok), 25-Авг-22, 12:14 
Assembly/Compiler Coding Rule значит, что правило для кодирования ручками и компиляторов. Поскольку, как я слышал, в Джаве применяется Just-in-time компилятор, значит оно применимо и к нему. Если намёк на интерпретацию байт-кода, то там гипотетически возможны свои оптимизации как раз на широких командах. Цикл ВМ, если кто их не видел (внутри там грубо говоря switch на 256 case), не очень хорошо предсказывается (я умудрялся получить просадку по скорости почти втрое именно из-за предсказателя). «Гипотетически» - потому что я пока не проверил предположения на железе. Михаил тут как-то похвалился, что предоставляют удалённый доступ, я ему ответил, что это от лукавого, и вот как раз эта тема.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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