Теоретически, мог бы List.getRange() быть таким же быстрым, как List<Список>[i]?

#c# #unity3d #cpu-cache

#c# #unity3d #cpu-cache

Вопрос:

Я собираюсь сравнить мой конкретный случай, но я хочу знать основной аргумент за или против выполнения следующего.

При отправке матриц для создания экземпляра геометрии, предполагая, что каждый пакет содержит список позиций, где Position — небольшая структура, мы могли бы:

(A) Выполните итерацию по a List<Position> и a List<int> и используйте результат List<int>[i] для выполнения List<Position>.GetRange(offset, count) отправки в GPU.

(B) Выполнить итерацию по List<List<Position>> , отправить List<List<Position>>[i] на графический процессор.

(Предполагается, что List<Position>.Count каждый пакет будет довольно маленьким.)

Интуитивно кажется, что (B) было бы быстрее с точки зрения кэширования процессора, верно ли это в теории?

Комментарии:

1. ericlippert.com/2012/12/17/performance-rant