(Этот пост касается высокочастотного программирования типа)
Я недавно видел на форуме (я думаю, что они обсуждали Java), что если вам нужно проанализировать много строковых данных, лучше использовать байтовый массив, чем строку с split (). Точный пост был:
Один трюк производительности для работы с любым языком, C ++, Java, C #
чтобы избежать создания объекта. Это не стоимость размещения или GC, его
стоимость доступа к большим массивам памяти, которые не помещаются в кэш процессора.
Современные процессоры намного быстрее, чем их память. Они останавливаются для многих,
много циклов для каждого кеша. Большая часть бюджета процессора ЦП
выделено для уменьшения этого с большими кешами и большим количеством тиков.
Графические процессоры решают проблему по-другому, имея множество потоков, готовых к
выполнить, чтобы скрыть задержку доступа к памяти и иметь мало или нет кеша и
потратить транзисторы на большее количество ядер.
Так, например, вместо использования String и split для разбора
сообщение, используйте байтовые массивы, которые могут быть обновлены на месте. Вы действительно хотите
чтобы избежать произвольного доступа к памяти через большие структуры данных, по крайней мере, в
внутренние петли.
Он просто говорит: «Не используйте строки, потому что они являются объектами, а создание объектов обходится дорого»? Или он говорит что-то еще?
Гарантирует ли использование байтового массива данные в кеше как можно дольше?
Когда вы используете строку, она слишком велика, чтобы ее можно было хранить в кэше процессора?
Вообще, использование примитивных типов данных - лучший способ для написания более быстрого кода?