Performance dart:在循环函数中创建的对象将被缓存还是重新创建?

Performance dart:在循环函数中创建的对象将被缓存还是重新创建?,performance,flutter,dart,optimization,Performance,Flutter,Dart,Optimization,在重复出现的函数(如CustomPaint的paint)中,如果我以这种方式创建对象: void paintCanvas画布,大小{ .... var myObj=MyClass; var myObj.configurecanvas,大小; .... } 在每帧调用paint时是否会重新创建此对象 或者它会被缓存,直到它所依赖的东西发生改变,比如屏幕大小的改变?这取决于您如何实现MyClass构造函数。我可以看到几个选项: MyClass标准构造函数-然后每次调用对象时都会重新创建它; MyCl

在重复出现的函数(如CustomPaint的paint)中,如果我以这种方式创建对象:

void paintCanvas画布,大小{ .... var myObj=MyClass; var myObj.configurecanvas,大小; .... } 在每帧调用paint时是否会重新创建此对象
或者它会被缓存,直到它所依赖的东西发生改变,比如屏幕大小的改变?

这取决于您如何实现MyClass构造函数。我可以看到几个选项:

MyClass标准构造函数-然后每次调用对象时都会重新创建它; MyClass可以有const构造函数。然后,如果您使用const MyClass创建实例,它将是同一个实例。因此,并非总是能够做到这一点。 MyClass可以有默认的工厂构造函数。通过这种方式,您可以根据需要在MyClass内部实现缓存。示例是singleton—您将始终拥有单个实例。例如,请参见此处:
还请注意,如果MyClass的对象是轻量级的,则可能不需要优化:Dart通常可以创建大量小对象并对其进行垃圾收集。

这取决于您如何实现MyClass构造函数。我可以看到几个选项:

MyClass标准构造函数-然后每次调用对象时都会重新创建它; MyClass可以有const构造函数。然后,如果您使用const MyClass创建实例,它将是同一个实例。因此,并非总是能够做到这一点。 MyClass可以有默认的工厂构造函数。通过这种方式,您可以根据需要在MyClass内部实现缓存。示例是singleton—您将始终拥有单个实例。例如,请参见此处: 还请注意,如果MyClass的对象是轻量级的,则可能不需要优化:Dart通常可以创建大量小对象并对其进行垃圾收集