目前我正在与WebVR合作,因此性能非常重要。
在THREE.js中,通常建议您不要在更新循环中创建新的Vector,而是重用它。因为我不喜欢匿名封装的功能,它们会返回你的实际功能,所以我想到了一个易于使用的替代品,它仍然具有高性能。
我想出了
window.vectors = {}
window.vector = (name) => {
if (vectors.hasOwnProperty(name)) {
return vectors[name]
} else {
let vec = new THREE.Vector3;
vectors[name] = vec;
return vec
}
}
这样你就不必创建矢量,只需要调用
vector('vectorname').fromArray(...)
你认为处理它们是一种聪明的方法吗?我已经对jsben.ch做了一个快速的基准测试,1000次查找的速度比重用一次只快10%,几乎是创建新查找速度的两倍。
所以对于所有THREE.js开发者:你是如何处理的?我是怎么做的,或者你能想到警告(除了理论上能够在对象最大值之外添加键)吗?