dart2js更好地优化const对象吗? [英] Does dart2js optimize const objects better?

查看:216
本文介绍了dart2js更好地优化const对象吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 const 构造函数创建的类实例比正常实例(使用 new 构造函数创建)更优化,

Are class instances created with a const constructor more optimized than the normal instances (created with a new constructor) when compiled to JavaScript with dart2js?

推荐答案

这里是2个元组实现:

使用常量构造函数:

With a constant constructor:

class Tuple{
  final _1, _2;
  foo()=> _1 + _2;
  const Tuple(this._1,this._2);
}

void main() {
  var a = const Tuple(10,20);
  var b = const Tuple(10,20);
  print(a);
  print(b);
  print(a.foo());
}

使用新的构造函数:

With a new constructor:

class Tuple{
  final _1, _2;
  foo()=> _1 + _2;
  Tuple(this._1,this._2);
}
void main() {
  var a = new Tuple(10,20);
  var b = new Tuple(10,20);
  print(a);
  print(b);
  print(a.foo());
}

dart2js输出比较

这是 new Tuple 查看输出:

That is how new Tuple looks in the output:

main: function() {
    P.print(new S.Tuple(10, 20));
    P.print(new S.Tuple(10, 20));
    P.print(30);
}

const Tuple 只创建一次 C.Tuple_10_20 = new S.Tuple(10,20); 并使用像这样:

const Tuple is created only once C.Tuple_10_20 = new S.Tuple(10, 20); and used like this:

main: function() {
    P.print(C.Tuple_10_20);
    P.print(C.Tuple_10_20);
    P.print(C.Tuple_10_20._1 + C.Tuple_10_20._2);
}

注意,在 new Tuple 函数调用已被其返回值文字替换,但它并没有发生在 const Tuple 输出。

这篇关于dart2js更好地优化const对象吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆