Sun*_*987 7 javascript performance dart
我已经阅读了有关谷歌即将推出的DASH/DART语言的文章,我觉得这很有趣.
我偶然发现的一件事是他们说他们会消除JavaScript固有的性能问题.但这些性能问题到底是什么?文中没有任何例子.这就是它所说的:
- 性能 - Dash在设计时考虑了性能特征,因此可以创建没有所有EcmaScript VM必须具有的性能问题的VM.
您对这些固有的性能问题有什么想法吗?
小智 8
对于那些只对时间编译器感兴趣的动态语言的人来说,这个帖子是必读的:http: //lambda-the-ultimate.org/node/3851
这个帖子的参与者是luajit的创建者,pypy伙伴,Mozilla的javascript开发者等等.特别注意Mike Pall的评论(他是luajit的创建者)以及他对javascript和python的看法.他说语言设计会影响绩效.例如,他重视简单性和正交性,同时避免困扰javascript的疯狂角落案例.
在那里讨论了许多不同的技术和方法(跟踪jits,方法jits,解释器等).看看这个!
路易斯
本文指的是来自极其动态的语言(如JavaScript)和原型继承的优化困难.
在Ruby或JavaScript等语言中,程序结构可以在运行时更改.类可以获得一个新方法,函数可以被eval()存在,等等.这使得运行时更难以优化其代码,因为永远不能保证设置结构.
与传统的基于类的语言相比,原型继承更难以优化.我怀疑这是因为基于类的VM有多年的研究和实施经验.
有趣的是,V8(Chrome的JavaScript引擎)使用隐藏类作为其优化策略的一部分.当然,JS没有类,因此V8中的对象布局更复杂.
V8中的对象布局要求标头中至少包含3个字.相比之下,Dart VM只需要标题中的1个字.Dart对象的大小和结构在编译时是已知的.这对VM设计者非常有用.
另一个例子:在Dart中,有真实的列表(又名数组).您可以拥有一个固定长度列表,这比JavaScript的非真实数组和始终可变长度更容易优化.
阅读更多关于使用此演示文稿将Dart(和JavaScript)编译为高效代码的信息:http://www.dartlang.org/slides/2013/04/compiling-dart-to-efficient-machine-code.pdf
另一个性能维度是启动时间.随着Web应用程序变得越来越复杂,代码行数也会增加.JavaScript的设计使得优化启动变得更加困难,因为解析和加载代码也会执行代码.在Dart中,语言经过精心设计,可以快速解析.Dart在加载和解析文件时不执行代码.
这也意味着Dart VM可以缓存已解析文件的二进制表示(称为快照),以便更快地启动.
| 归档时间: |
|
| 查看次数: |
3305 次 |
| 最近记录: |