html5<画布>Opera 11 上速度极慢?

发布于 2024-11-15 03:52:17 字数 386 浏览 3 评论 0原文

我们用html5的element+JavaScript实现了图形绘制。 在此处查看

它适用于 Chrome 12、Firefox 3.6 和 4 以及 Opera 11。

在 Chrome 和 Firefox 中,与鼠标交互(悬停和滚动缩放)或使用图形控件切换属性时,绘图速度良好。但在 Opera 11.11 中,重画需要很长时间。我在两台不同的机器上进行了尝试,一台使用 Windows,另一台使用 Linux。

有什么想法为什么会这样吗?或者我怎样才能找出问题所在?

We implemented graph drawing with html5's element + JavaScript. View it here.

It works in Chrome 12, Firefox 3.6 and 4, and in Opera 11.

The drawing speed is fine in Chrome and Firefox when interacting with the mouse (hover and scroll to zoom) or when switching properties with the graph controls. But in Opera 11.11 it takes ages to redraw. I tried on two different machines, one with Windows and the other with Linux.

Any ideas why this is so? Or how I could find out what the problem is?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三五鸿雁 2024-11-22 03:52:17

在 Opera 中,使用 context.globalCompositeOperation = "destination-over"; 填充每个路径大约 200 层,每层花费了 35 毫秒。

幸运的是,我有一种方法可以在不破坏视觉效果的情况下使用 context.globalCompositeOperation = "source-over";,从而使速度更接近 Firefox 和 Chrome 中的速度。

我发现,通过使用以下两行受分析器代码启发,James Black 发布了一个链接:

time=new Date().getTime(); //this line before the code block to test
//code block under test
time=new Date().getTime() - time; opera.postError(time +'ms'); //this line after the code block to test

请注意,Chrome (Webkit) 已经有一个内置的 JavaScript 分析器,并且在 Firefox 中,Firebug 扩展也允许轻松进行分析。但我没有找到 Opera 的类似内容。

Filling each path with context.globalCompositeOperation = "destination-over"; took 35ms for each of the ~200 layers in Opera.

Fortunately there was a way I could use context.globalCompositeOperation = "source-over"; without destroying the visual, making the speed way closer to the one in Firefox and Chrome.

I found out by using the following two lines inspired by the profiler code, James Black posted a link to:

time=new Date().getTime(); //this line before the code block to test
//code block under test
time=new Date().getTime() - time; opera.postError(time +'ms'); //this line after the code block to test

Note that Chrome (Webkit) already has a built in JavaScript profiler, and in Firefox the Firebug Extension also allows easy profiling. But I didn't find anything similar for Opera.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文