微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有这句话:

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仅在我实际遇到问题时才开始调查。

别担心,请相信编译器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?