连接到Socket,Dart,Flutter的奇怪时间

时间:2019-03-15 10:01:37

标签: sockets dart flutter

对于我的研究,我正在测量移动客户端(用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;
}

它是通过单击按钮触发的。

1 个答案:

答案 0 :(得分:1)

我对此并不了解很多,但是我猜测是JIT编译(例如,建立连接时执行的函数可能会在第一次调用时进行编译)或某种优化(当多次调用代码时,可能可以根据代码所采用的路径和输入值对其进行优化。

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