Исходя из фона C/С++, макет памяти объектов в отношении сокращения промахов в кеше - это то, что имеет решающее значение, особенно при работе на консолях. Ориентированный на данные дизайн часто выступает за объектно-ориентированный дизайн, чтобы помочь связать связанные объекты друг с другом в памяти (особенно в критичных по производительности областях).
Недавно я занимался разработкой Javascript, и мне интересно, какой общий консенсус находится в сообществе Javascript.
С моим ограниченным опытом работы в Javascript я часто был удивлен, увидев совершенно неожиданные результаты при профилировании. Структура внутренней памяти и реализация объектов/структур Javascript сильно варьируются от браузера до браузера, и я задаюсь вопросом, стоит ли пытаться оптимизировать.
Я создал простой тестовый пример (http://jsperf.com/object-vs-data) на jsPerf, чтобы сравнить производительность двух методов, и пока он показывает прирост производительности в Chrome, есть нет заметного ускорения в Safari.
В Javascript, должен ли я даже относиться к макету объектов объектов? Или это скорее "реализовать его в одном направлении, а затем оптимизировать, если нужно" типа?
Этот второй вариант кажется вроде расточительным (с точки зрения времени разработки), особенно если есть какие-то хорошие ориентиры.
Спасибо ~
Дополнительная информация: Это в основном то, как я буду реализовывать два подхода в Javascript. Вышеупомянутый тестовый пример jsPerf реализован следующим образом.
var objectOriented = [
{ foo: 1, bar: 2 },
{ foo: 3, bar: 4 }
];
var dataOriented = {
foos: [1, 3],
bars: [2, 4]
};
// Object-oriented access:
var a = objectOriented[0].bar;
// Data-oriented access:
var b = dataOriented.bars[0];