计算在不同操作系统间通讯的传输时间注意事项
最近@terryK 在计算统计在从windows通讯传输到Android的传输时间,@terryK 给出的计算公式是 传输时间 = (Android2 - Android1) - (windows2 - windows1):Android1是指上一次收到数据的Android系统时间,Android2是指这一次收到数据的Android系统时间,windows1是指上一次发送时Windows系统时间,windows2是指这一次发送时Windows系统时间,最终计算在android端计算。
经过我们讨论,计算公式没发现什么问题,但是结果出来偶尔出现一些负数。经过检查代码,一开始认为是windows端发送数据后,await等待了android的返回,但是去掉await后仍然存在负数,所以这个问题不是主要问题。
然后我们列出了windows端和android的规律,如下:
@terryK 看到这个规律想到了之前他做的投屏通讯遇到的问题:很多协议的通讯是达到了默认设定的包大小才会发送一次数据。这样看来就解析通以上规律了。每间隔几个数据就出现负数,说明每间隔几个数据可能达到了默认最大发送包值1M,所以这时候发送数据,然后与上一次处理的数据间隔是很小的(只要这个间隔时间比windows发送频率小,就会出现负数)。所以把每个计算出来的传输时间画成折线图,那么每个峰值就是相对准确的传输时间。