创建用于存储数据的局部变量时是否存在任何性能或内存问题

问题描述

我有这句话:

final output = MyEnum.values[myPreferences.getIndex('some_key') ?? getDefaultIndex('some_key')];

我可以将这两个表达式的值存储在本地变量中,例如:

final savedindex =  myPreferences.getIndex('some_key');
final defaultIndex = getDefaultIndex('some_key');
final output = MyEnum.values[savedindex ?? defaultIndex];

如果我在1000个output类型变量中执行相同的重构(创建两个额外的局部变量以使代码看起来更具可读性),这会导致性能/内存问题吗?


PS:请不要对如何更好地从SharedPreferences获取认值以及如何减少上述声明提出建议。我只是使用示例进行说明。

解决方法

很有可能不是。我不用担心。

在某些情况下,Dart可能难以优化,但是局部变量是编译器非常擅长处理的一件事。 除非您的代码分配了一个庞大的对象,将其放入局部变量中,一次使用它,再也不需要它,然后继续进行很长的计算,否则我不会担心局部变量会使该值保持活动状态。即使在那种情况下,编译器几乎肯定会在不再需要该值后仍然保持其活动状态(即使这样做,即使您不使用变量作为中间值也可能会执行该操作),而我d仅在我实际遇到问题时才开始调查。

别担心,请相信编译器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...