Dart - Map vs Switch 语句性能

时间:2021-03-31 09:34:48

标签: dictionary dart switch-statement

在我们的 flutter 项目中,使用了很多 enumextension。我们中的一些人写 switch 语句,其他一些人使用 map。我想知道在时间、记忆等方面,哪种做法被认为是最好的?

enum Animal { cat, dog, bird }

切换语句:

extension AnimalExtension on Animal {
    String get name {
        switch (this) {
            case Animal.cat:
                return 'Cat';
            case Animal.dog:
                return 'Dog';
            case Animal.bird:
                return 'Bird';
        }
    }
}

地图:

extension AnimalExtension on Animal {
    String get name => {
        Animal.cat: 'Cat',
        Animal.dog: 'Dog',
        Animal.bird: 'Bird',
    }[this];
}

另外,对于 map 方法,创建一个 static const Map 是否比在每次调用时动态实例化它更好?

1 个答案:

答案 0 :(得分:2)

我不会担心这么小的东西的速度,除非它是你计算的内部循环的核心。

切换有机会提高时间效率,地图的代码可能会更少(它重用了 Map.[] 代码)。地图绝对应该是常量。

如果您想优化性能代码大小,我会选择:

  String get name => const ['cat', 'dog', 'bird'][this.index];