Ответ 1
Я отправил по электронной почте разработчику glMatrix
, и мой ответ ниже содержит его комментарии (пункты 2 и 3):
-
Создание нового объекта обычно быстрее с
Array
, чемFloat32Array
. Коэффициент усиления значим для небольших массивов, но меньше (зависит от среды) с большими массивами. -
Доступ к данным из TypedArray (например,
Float32Array
) часто происходит быстрее, чем из обычного массива, что означает, что большинство операций с массивами (помимо создания нового объекта) быстрее с помощью TypedArrays. -
Как также указано @emidander,
glMatrix
был разработан в основном для WebGL, который требует, чтобы векторы и матрицы были переданы какFloat32Array
. Таким образом, для приложения WebGL потенциально дорогостоящее преобразование сArray
вFloat32Array
должно быть включено в любое измерение производительности.
Итак, неудивительно, что лучший выбор зависит от приложения:
-
Если массивы обычно малы и/или количество операций на них низкое, так что время конструктора является значительной частью срока службы массива, используйте
Array
. -
Если читаемость кода важна как производительность, используйте
Array
(т.е. используйте[]
вместо конструктора). -
Если массивы очень большие и/или используются для многих операций, используйте TypedArray.
-
Для приложений WebGL (или других приложений, которые в противном случае требовали бы преобразования типов), используйте
Float32Array
(или другой TypedArray).