variables - Dart 中的动态类型是否较慢?

标签 variables dynamic types dart

我一直想知道 Dart 中的动态类型是否更慢。

给出的例子:

final dynamic example = "Example"

相对
final String example = "Example"

最佳答案

是的,在 Dart 中使用 dynamic 类型变量通常比使用具有实际类型类型的变量慢。

但是,您的示例没有使用 dynamic 作为类型,而是使用类型推断来推断 String 类型。这在编译时可能会额外花费一点,但在运行时,您的两个代码示例完全相同。两个变量的类型都为 String
dynamic 方法调用可能会更慢,因为运行时系统必须添加额外的检查以确保变量可以执行您尝试使用它执行的操作。
如果你有 int x = 2; print(x + 3); 运行时系统知道 int 有一个 + 操作符,甚至知道它是什么。
如果你写 dynamic x = 2; print(x + 3); ,运行时系统必须先检查 x 是否有 + 运算符才能调用它,并在调用之前找到该运算符在对象上的定义。它可能并不总是更慢,某些情况下比其他情况优化得更好,但它永远不会更快。
并非所有代码都对性能敏感,也并非所有变量都可以键入。如果您有一个包含 StringList 的变量,并且您想知道长度,那么只写 stringOrList.lengthstringOrList is String ? stringOrList.length : (stringOrList as List).length 更方便。根据编译器和目标平台的不同,它可能会更慢。

关于variables - Dart 中的动态类型是否较慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323051/

相关文章:

PHP 在 session 变量中传递数组

c# - Entity Framework 是否提供将 DB 类型转换为 C# 类型的实用程序?

javascript - 在这种情况下初始化变量的正确方法?

c++ - 在 C++ 中,阴影变量名称的范围分辨率 ("order of precedence"是什么?

dynamic - Selenium 获取动态 ID XPath

c# - 为什么动态转换比对象转换更快

c# - 是否可以有条件地停止 .NET 2008 调试器?

javascript - Facebook Flow 函数联合类型

c++ - 数据类型的评估不同

java - java中如何获取两个对象字段之间的差异