The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Первая альфа-сборка FreeBSD 10.0"
Отправлено Аноним, 17-Сен-13 03:32 
> хорошо себе представляете, что должен делать код, если он занимает несколько мегабайт?!

Оно реализует туеву хучу замороченной логики, парсинг замороченных протоколов, разбор каких-то эзотерических форматов файлов и уйму всего еще. Да, это - дохрена. Сиплюсплюсники "поймавшие волну" генерят код лучше чем экскаватор грунт ворочает. Бинарь на 4-6 метров для си++'нутых программ обычное дело.

> А теперь скажите какая секция того бинарника уменьшилась в ходе оговоренной оптимизации?

Код, внезапно! LTO при линковке IIRC убивает glue, нужный для экспортирования функций и вызова оных извне. Поэтому линковка кода в 1 большой бинарь, из которого экспорт "внутренних" символов не делается - приносит нехилый выигрыш. И по скорости (вызов функций становится быстрее, особенно если функция дергается часто) и по размеру. К вопросу о том почему не надо плодить библы, если реюз кода не планируется.

> Если речь о секции данных, то мимо. От cache miss это
> не спасет вообще никак - оптимизируйте дальше.

Каким хреном LTO относится к данным? Код сдувается, разумеется. Почему - см выше. Я как-то так не парился, а оказалось - крутая фича, временами дает весьма приятный выигрыш без каких либо усилий. Линковка конечно куда дольше, не отнять. И ресурсов жрет прилично.

> У вас код занимает несколько мегабайт. В какой кеш Вы предлагает его
> запихнуть? Покажите мне этот кеш, я хочу его!

Типовой размер L2/L3 кэшей современных х86 нынче измеряется в *мегабайтах*, с разморозкой вас. А у монстров типа xeon и десятками уже бывает. Ну вот у моего десктопного проца, например, 1024Кб на ядро L2 и 8192Кб общего L3. И да, L3 - таки куда лучше чем DDR3 с его адской латентностью и "где-то там". До мозильщиков вон тоже долшло - они лису с -Os вообще собирают.

> поражает своей технической грамотностью.

Не к чему до..ться - до...сь к формулировкам. Ну или к личности оппонента.

> Собственно, а где Вы взяли такую чушь, что какой-либо код должен умещаться
> в кеш целиком?

Он не "должен", работать будет и без этого. Но если уместится и тасовка кода минимизируется - производительность может прилично подскочить. Правда логично? :)

> Это что же, по вашему, если это так, то все отлично и мы спасены от промахов кеша?

Вопрос в общем то в количестве этих самых промахов. Меньше код - меньше промахов. Попробуй оспорь :). В сферическом случае в вакууме, когда кэша хватило на вообще все и вся - промахов почти не будет. Вот так вот просто и логично.

> (Это Вам домашнее задание)

Ну да, сразу видно бсдшника - пальцы веером. При том что типовой размер кэша современного проца не знает, как и про то что делает LTO.

> В общем случае, бинарник бОльшего размера, с подряд идущими инструкциями, без далеких
> переходов, выходящих за границу линии кеша, лучше обрабатывается кешем,

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

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

А еще лучше - если в кэш вгрузится все что используется. Так что промахов в идеальном случае почти не будет. Чем чаще наступает именно этот случай - тем лучше. Вот уменьшение размера кода очень тому способствует.

> нежели поочереди грузить несколько разрозненных
> линий по каждому cache miss (ага, здравствуй tlb miss!).

Вот кэши и делают нынче жиииииирными. Чтобы туда лезло как можно больше. Потому что latancy DDR3 и близко не стоял с кэшатиной.

>  профилирование_ полученного кода, а не сравнивать теплое с мягким.

Приколись, оно покажет то что и должно. В среднем по больнице станет лучше, ясен хрен.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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