首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译成JS的Dart代码似乎比Dart更快(在Dartium中)

编译成JS的Dart代码似乎比Dart更快(在Dartium中)
EN

Stack Overflow用户
提问于 2013-05-23 18:04:00
回答 2查看 771关注 0票数 3

Dart的性能给我留下了深刻的印象,我用Dart (使用HTML5画布)编写了一个非常简单的web应用程序来渲染曼德尔布洛特集。这绝对不是一个现实的性能测试。该页面在800x600画布中渲染Mandelbrot集,最大深度为10.000。这个应用程序可以在这里看到:http://goo.gl/DLuQp

令我困惑的是:在Dartium中运行,图像渲染大约需要8.5秒(这是令人印象深刻的)。在Firefox中,相同的页面需要超过15秒。这一点也不奇怪。

但是在Chrome (版本27.0.1453.93)中运行相同的页面,它不运行Dart,但JS版本也能在6.7秒内完成,比Dart快吗?

为什么会这样呢?

更新:我添加了一个"Run“按钮来重新渲染画布(以验证预热行为)。此外,我还添加了一个仅限JS的版本(当然是相同的代码),以便在Dartium中检查JS。简而言之:数字和我的问题保持不变。热身似乎没有效果。在Dartium中,JS版本比Dart版本更快。

在结束问题后更新:只是为了记录:在这种特定情况下,将代码移动到并行工作者/隔离中不仅会带来显著的性能提升,而且Dart现在显然将JS版本抛在了后面10倍。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-24 04:55:05

这是canvas绑定和API的一个已知问题。请参阅http://dartbug.com/10344

票数 5
EN

Stack Overflow用户

发布于 2013-05-23 18:45:02

这可能有几个原因。从我脑海中跳出:

  • Dart VM错过了一些优化。V8比Dart-VM早得多,一些优化还没有进入Dart。
  • 你没有运行预热运行。Dart-VM当前不执行OSR (堆栈上更换)。当一个函数被调用时,它将以与启动时相同的“模式”结束。也就是说,如果一个重要的函数是在非优化模式下启动的,但是包含一个真正重要的循环(并且运行了很长时间),那么Dart VM将不会用优化的版本替换它。一种简单的解决方法是首先执行函数(可能使用较小的值),以便优化函数。最终,OSR将进入Dart虚拟机。
  • 确保您未在检查模式下运行。在未检查模式下,Dart-VM的速度会快得多。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16711001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档