|
кто-то сравнивал asm от Qt и обычный?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Я хочу хотя-бы на элементарном уровне разложить свои данные на 2 кучки. Одна кучка - меня интересует в кеше. На другую мне - плевать. они всегда будут в кэше... А ты можешь лишь разложить данные по структурам и подогнать их под cache-line Вот я-ж про это и говорю. Нет в языке механики управления cache-friendly. Пока сам разработчик не разложит структуры данных так чтоб было компактно и когерентно - ничего компиллятор не сделает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2021, 16:51 |
|
кто-то сравнивал asm от Qt и обычный?
|
|||
---|---|---|---|
#18+
mayton White Owl пропущено... Почему это вдруг "не создали"? А GCC тебе чем не кеш-френдли? Просто скажи ему для какого процессора надо делать - сделает. Да ему даже можно указывать конкретные размеры кешей, отдельно для L1 и для L2 если у тебя какой-то необычный процессор. Я не хочу указывать конкретные размеры кешей. Мне это и не надо. Я не знаю какой будет целевой кеш и процессор. mayton Я хочу хотя-бы на элементарном уровне разложить свои данные на 2 кучки. Одна кучка - меня интересует в кеше. На другую мне - плевать. По аналогии с Oracle опцией buffer_pool = { KEEP | DEFAULT } Оптимизаторы (того-же gcc) вполне умеют переносить переменные сразу в регистр вместо стека если это возможно (ну или вообще в константу превращать). Но в принципе, ты же можешь задать что мол размер L1/2 кеша у тебя в 1Мб, что с учетом того что в современных ЦПУ уже и 16Мб не редкость, то ты можешь быть уверен что какой-нибудь часто используемый массивчик меньше этого размера обязательно в кеш попадет. Тут те-же соображения что и с Ораклом - если у тебя есть достаточно памяти и таблица достаточно маленькая - оракл будет стараться держать ее в кеше. Ключевое слово "стараться". Не обязательно что получиться, конечно, но некоторый шанс на успех будет. Так же и с компиляторами. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 18:21 |
|
кто-то сравнивал asm от Qt и обычный?
|
|||
---|---|---|---|
#18+
mayton бабушкин зайчик пропущено... они всегда будут в кэше... А ты можешь лишь разложить данные по структурам и подогнать их под cache-line Вот я-ж про это и говорю. Нет в языке механики управления cache-friendly. Пока сам разработчик не разложит структуры данных так чтоб было компактно и когерентно - ничего компиллятор не сделает. Есть. Вернее, в языке есть способ порушить кеш-дружелюбность (хорошее слово, однако :) Просто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано для кеша положит. Вот если ты ее принудительно упакуешь как-то, тогда да - потеряешь эту самую кеш-дружелюбность. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 18:26 |
|
кто-то сравнивал asm от Qt и обычный?
|
|||
---|---|---|---|
#18+
White OwlПросто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано для кеша положит. Увы, не для кэша, а для выборки отдельных полей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 18:51 |
|
кто-то сравнивал asm от Qt и обычный?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov White OwlПросто не определяй #pragma pack для структуры и компилятор ее вполне себе оптимизировано для кеша положит. Увы, не для кэша, а для выборки отдельных полей. Ну это тоже можно порушить - volatile и будет переменная гарантированно в памяти а не в кеше или регистре. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 19:11 |
|
|
start [/forum/topic.php?fid=57&msg=40068144&tid=2017220]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 398ms |
0 / 0 |