Re[31]: this_thread::sleep_for(1s);
От: lpd Черногория  
Дата: 10.01.17 07:28
Оценка: -1
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Qbit86, Вы писали:


Q>>И, раз уж массив указателей это плохо для кэша, то почему это не плохо для массива moveable-объектов, которые (для реализации move-семантики) реализованы через тот же указатель, только внутри?


_>У тебя не верное сравнение. Структура объекта очевидно определяется не тем, как его будут хранить в массивах, а его прикладными свойствами. Так что в итоге в варианте использования массива указателей у нас получится массив указателей на объекты содержащие указатель. Кстати, вот именно такая архитектура и является максимально характерной для мира Java/C#.


_>Что касается кэша, то конечно же любая косвенность снижает его эффективность. Но какие-то самые банальные её уровни предсказатель всё же способен побороть. Но при многоуровневой косвенности эффективная работа кэша умирает сразу. )))


В кэше не только данные, к которым обращение проходит последовательно, но и данные, к которым недавно было обращание. Причем второй вариант актуален гораздо чаще, чем первый. Кэшировать последовательное обращение нужно скорее для инструкций, чем для данных. Либо, в вычислительных алгоритмах. Но там, скорее всего, будут простые массивы. Пример: я реализовывал алгоритм на простом бинарном графе, и boost::graph работал на 30% медленнее, чем моя структура. Это неплохо, но все равно неприемлемо.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 10.01.2017 7:32 lpd . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.