【问题标题】:Strange time of connecting to the Socket, Dart, Flutter连接Socket、Dart、Flutter的奇怪时间
【发布时间】:2019-03-15 10:01:36
【问题描述】:

对于我的研究,我正在测量移动客户端(用 Flutter 编写)通过 Socket 连接到服务器(用 Ktor 编写)所需的时间。我的应用程序连接和断开套接字 10 次,我的结果是这样的(以毫秒为单位): [23, 19, 1, 1, 2, 1, 6, 2, 3, 1] 有人可以向我解释一下,在 1-2-3 次连接之后,下一次连接的时间怎么可能只需要几毫秒? 是我的测试方法错误还是它下面的某种 Dart 机制?

连接客户端的函数:

void connectionLoop() {
  _connectionTimesMultiple().then((connectionTime) {
    _connectionTimes.add(connectionTime);
    if (_connectionTimes.length < 10) {
      connectionLoop();
    } else {
      print(_connectionTimes);
      final numberInList = _connectionTimes.length;
      final averageTime =
          _connectionTimes.reduce((a, b) => a + b) / numberInList;
      print(averageTime);
    }
  });
}

Future<int> _connectionTimesMultiple() async {
  final stopwatch = Stopwatch()..start();
  Socket sock = await Socket.connect('10.0.2.2', 8080);
  final connectionTime = stopwatch.elapsedMilliseconds;
  sock.close();
  return connectionTime;
}

它是由一个简单的按钮点击触发的。

【问题讨论】:

    标签: sockets dart flutter


    【解决方案1】:

    我对此了解不多,但我的猜测是它要么是 JIT 编译(例如,在建立连接时执行的函数可能会作为第一次调用它的一部分进行编译)或一些优化(当代码被多次调用时,可以根据它所采用的路径和输入值来优化它。

    也就是说,如果您想在 Flutter 中衡量应用程序的性能,您应该查看 profile mode。调试模式(在 Dart VM 中运行并针对调试、快速构建时间、热重载进行了优化)和配置文件/发布模式(提前编译为本机代码)之间的性能特征可能会有很大差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2020-05-05
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2011-11-06
      相关资源
      最近更新 更多