这个问题在本质上这另外一个问题类似,两年前问: 为什么拉斐尔的帧速率减缓这个代码?
我以下列方式使用拉斐尔2.1.0在Chromium 25:
<html>
<head>
<title>Drawfun</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<script src="raphael.js"></script>
<script>
var paper = Raphael(10, 50, 320, 200);
var anim = Raphael.animation({transform: "R360"}, 500).repeat(Infinity);
var rect = paper.rect(50, 40, 10, 20);
rect.attr("fill", "#f00");
rect.attr("stroke", "#fff");
rect.animate(anim);
</script>
</body>
</html>
最初,矩形旋转顺畅,正如人们所期望的那样。 一两分钟后,旋转在约15 FPS的速度运行。 五,之后八分钟,动画是在约5 FPS运行。
Chrome的CPU配置文件表明,作为动画变得更加波涛汹涌,脚本中花费的时间越来越少(program)
,并在越来越多的时间repush
和eve.listeners
。
在Chrome任务管理器并不表示有内存泄漏,无论是在JS内存池或Chrome的,但它揭示出的页面随着时间的推移会消耗更多的CPU。
运行页面时,在最近版本的Firefox中,动画变得波涛汹涌的多,更加迅速。 这些结果已经证实在Linux和Windows,所以它不是一个操作系统的问题:)。
没有人有任何深入了解什么可能是错误的,要么是我的代码或拉斐尔的内部?