为什么我的 paperjs 应用会消耗如此多 CPU 的电量并变慢?
Why does my paperjs app take so much CPU power and slow down?
我有this Sketch。您可以通过使用向上加速和左右旋转船舶方向来驾驶船舶。 (虽然由于无法从编辑器中模糊,所以它并不总是适用于 Sketch,因此按键事件不会在 canvas window 中注册)
每一帧它都会将船舶当前质心的点添加到完整的船舶轨迹中。这一切都很好而且花花公子。飞行约 2 分钟后(具体取决于您的计算机)出现问题。渐渐地,整个事情开始变慢,帧率下降到可见的水平。一开始我以为这是因为每个点都需要存储在RAM中,而且点太多了,但是tab的内存似乎并没有明显增加。 CPU 使用率似乎迅速上升到 ~20%,并且通常保持在那里。有人对此有解释或修复吗?
好的,我对此做了一些阅读。您在帧滴答回调中不断添加到 ship.path
。尝试像这样限制路径的最大大小:
var MAX_SEGMENTS = 1000
ship.path.add(centroid(ship.shipPath));
function onFrame(event) {
if (ship.path.length > MAX_SEGMENTS)
{
var d = ship.path.length - MAX_SEGMENTS
ship.path.removeSegments(0, d)
}
已更新sketch
我有this Sketch。您可以通过使用向上加速和左右旋转船舶方向来驾驶船舶。 (虽然由于无法从编辑器中模糊,所以它并不总是适用于 Sketch,因此按键事件不会在 canvas window 中注册)
每一帧它都会将船舶当前质心的点添加到完整的船舶轨迹中。这一切都很好而且花花公子。飞行约 2 分钟后(具体取决于您的计算机)出现问题。渐渐地,整个事情开始变慢,帧率下降到可见的水平。一开始我以为这是因为每个点都需要存储在RAM中,而且点太多了,但是tab的内存似乎并没有明显增加。 CPU 使用率似乎迅速上升到 ~20%,并且通常保持在那里。有人对此有解释或修复吗?
好的,我对此做了一些阅读。您在帧滴答回调中不断添加到 ship.path
。尝试像这样限制路径的最大大小:
var MAX_SEGMENTS = 1000
ship.path.add(centroid(ship.shipPath));
function onFrame(event) {
if (ship.path.length > MAX_SEGMENTS)
{
var d = ship.path.length - MAX_SEGMENTS
ship.path.removeSegments(0, d)
}
已更新sketch