代码之家  ›  专栏  ›  技术社区  ›  TSR

异步关键字导致性能大幅下降

  •  1
  • TSR  · 技术社区  · 4 年前

    我试图理解async/await,但我发现了这一点。 下面的两个代码只与关键字不同 async

    void main() {
      asyncAwait();
    }
    
    void asyncAwait() {
      int i = 0;
      DateTime now = DateTime.now();
      print(" Now ");
      while (i++ < 10000000000);
      DateTime after = DateTime.now();
      print("Done in ${after.difference(now)}");
    }
    

    现在完成时间:0:00:09.221742

    void main() {
      asyncAwait();
    }
    
    void asyncAwait() async {
      int i = 0;
      DateTime now = DateTime.now();
      print(" Now ");
      while (i++ < 10000000000);
      DateTime after = DateTime.now();
      print("Done in ${after.difference(now)}");
    }
    

    现在完成时间:0:00:30.555924

    其中一个至少比另一个快3倍。我正在寻找编译器级别的解释,但我找不到任何相关文档。

    我用这个命令用dart 2.13.0运行它

    dart main.dart
    

    如果你看不到巨大的差异,机会是10000000000到100000000000

    0 回复  |  直到 4 年前