JavaScript数字到字符串转换性能

JavaScript数字到字符串转换性能,javascript,performance,google-chrome,google-chrome-devtools,Javascript,Performance,Google Chrome,Google Chrome Devtools,我正在制作SVG动画,这需要我将3D向量数组转换为SVG路径属性。现在,瓶颈似乎是字符串和数字之间的实际转换。(不是更复杂的矩阵变换和对Math.sin/cos/exp的调用!) 以下是Chrome profiler的屏幕截图: 如果性能至关重要,那么加快速度的最佳方法是什么?使用`{posn.x*p},${posn.y*p}的性能稍差,而使用.toString()或.toFixed(2)则差得多。正如前面提到的,Math.sin调用可能主要是一个表查找,加上非常有限的线性插值步骤。如果将一个

我正在制作SVG动画,这需要我将3D向量数组转换为SVG路径属性。现在,瓶颈似乎是字符串和数字之间的实际转换。(不是更复杂的矩阵变换和对Math.sin/cos/exp的调用!)

以下是Chrome profiler的屏幕截图:


如果性能至关重要,那么加快速度的最佳方法是什么?使用
`{posn.x*p},${posn.y*p}
的性能稍差,而使用
.toString()
.toFixed(2)
则差得多。

正如前面提到的,
Math.sin
调用可能主要是一个表查找,加上非常有限的线性插值步骤。如果将一个数字转换成十进制自然会有更大的问题,我不会感到困惑。它应该仍然非常快,但是,你必须做很多这些,遇到问题。我会想,是否有更基本的东西可以改变你正在采取的方法。通常情况下,最好避免在概念上接近性能极限—您必须花费大量精力进行优化。这是一个相当复杂的场景,因此每帧上可能有5000点左右。将数字转换为字符串并将其设置为路径的“d”属性感觉非常奇怪,因为浏览器必须再次反向解析此字符串。但是,我不认为SVG元素有一个API可以直接执行此操作:(如果之后连接这些结果,那么不要在这里执行此操作。相反,在累加器数组中单独推送元素,并在最后执行array.join(“”)。