Здравствуйте, ·, Вы писали:
EP>>Речь о том что локальность (в частности C#-ский struct) позволяет более эффективно использовать железо — кэш, регистры и т.п. А не о том что нужно вручную колупаться в регистрах чтобы получить локальность.
·>В принципе new MyClass[100_000] вполне локален. Может быть немного неэффективен, но не настолько страшно, как малюют.
MyClass может содержать внутри ссылки на другие объекты, те в свою очередь ещё на другие, а сам массив может быть многократно перемешан/отсортирован — привет проседания на один-несколько порядков. Не говоря уже о дополнительной работе для GC.
·>На крайний случай всегда есть new byte[1_000_000] — но таких мест где это реально требуется — очень мало.
·>java быстро работать может — факт, пусть код выглядит похуже, это не show stopper.
"Похуже" — это такой аутотренинг с самоуспокоением?
Там от языка-то практически ничего не остаётся — классы нельзя, GC нельзя, композицию нельзя и т.п.
Не помню точную цитату, но суть в следующем — на заре вычислительной техники кто-то возмутился по поводу компиляторов языков (что-то типа Fortran или Algol) мол зачем нагружать компьютер той рутинной работой (компиляцией), с которой хорошо справляются девушки.
Так вот эти нарезатели байт-буферов прям как те самые девушки занимаются рутинной механической работой, с которой прекрасно справляются компиляторы, тем более в 2016.