Войти
ПрограммированиеФорумОбщее

Кэш-промах

Страницы: 1 2 3 4 Следующая »
#0
18:31, 3 мар. 2011

Подскажите, пожалуйста, будет ли кэш промахи если создать массив таким образом:

int* arr = new int[i];

#1
18:35, 3 мар. 2011

/sigh

#2
18:37, 3 мар. 2011

Лишь бы в массив попадало :)

#3
18:47, 3 мар. 2011

Все массивы создаются либо так, либо статичны. А промах кэша не зависит от способа создания, зависит только от размера данных, к которым ты обращаешься.

#4
18:53, 3 мар. 2011

Понятно.

#5
23:38, 3 мар. 2011

SNVampyre

> А промах кэша зависит только от размера данных
Не зависит.

#6
23:49, 3 мар. 2011

Ghost2
http://www.gamedev.ru/code/terms/CacheMiss
>Cache Miss(промах кэша) случается, когда запрашиваемые данные отсутствуют в кэше и их нужно подгружать из основного источника.
То есть чем больше массив, тем выше вероятность, что он не влезет в кэш, и придётся подгружать данные дополнительно.

#7
0:20, 4 мар. 2011

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

#8
0:29, 4 мар. 2011

Suslik
> тебе показать, как можно сделать промах кэша, используя два байта памяти?
Может ты имеешь в виду случайный доступ к памяти? Это другое.
Промах кэша - это когда например 65536 Байт быстро, а 65537 уже заметно медленнее. Вот это промах кэша 100%. А если у тебя все данные разбросаны по памяти, то это уже скорость обращения к случайному участку памяти, а латентность памяти, как известно, примерно в 20 раз выше, чем латентность кэша.

#9
0:31, 4 мар. 2011

классная история. расскажешь ещё раз?

#10
0:34, 4 мар. 2011

Suslik
Учи матчасть по процессорам, мне больше нечего сказать.

#11
2:09, 4 мар. 2011

SNVampyre
> это когда например 65536 Байт быстро, а 65537 уже заметно медленнее.
дожили...
кешпромахи как раз и связаны со случайными обращениями к памяти, так как те же 65к можно обработать быстро, а можно очень медленно... вот в случае медленно это и есть куча кеш промахов...

#12
2:15, 4 мар. 2011

Pushkoff
У автора массив, который лежит одним блоком, в нём не может быть случайных обращений к памяти. О случайных обращениях создавай отдельную тему и там флуди.
А если не в курсе о том, что при невлезании массива в кэш наблюдается провал производительности, то тут уже ничего не поможет.
Можешь даже попробовать создать несколько массивов, которые влезают в кэш, и один большой, который не влезает. И попробовать обрабатывать их так, что количество прокаченных данных и количество действий будет одинаковым. Но большой массив из-за промахов кэша будет медленнее работать. Это стандартный тест на промахи кэша, независимый от латентности памяти.

#13
2:45, 4 мар. 2011

SNVampyre
> И попробовать обрабатывать их так, что количество прокаченных данных и
> количество действий будет одинаковым. Но большой массив из-за промахов кэша
> будет медленнее работать.
а можно взять большой массив и обработать его так, что количество промахов будет минимальным, главное понимать что они неизбежны...
поэтому, как правильно заметил суслик, можно получать кешпромах при каждом обращении к массиву из 2 байт, потому как главное это правильная работа с данными...
то что ты описал это следствие неправильной работы с данными...

#14
2:49, 4 мар. 2011

VikWhite
> Подскажите, пожалуйста, будет ли кэш промахи если создать массив таким образом:
кеш промахи будут всегда чтобы ты не делал
SNVampyre
> Промах кэша - это когда например 65536 Байт быстро, а 65537 уже заметно медленнее.
чушь

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.