gpt4 book ai didi

java - "Client - Server"性能问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:17 27 4
gpt4 key购买 nike

我有一个“排队论”问题,需要完成以下操作:

  • 开发一个客户端,以固定速率向服务器发送固定大小的连续数据包
  • SERVER 在处理这些数据包之前必须对这些数据包进行排队和排序
  • 然后我们需要证明(对于某些数据包大小为“n”字节和速率为“r”MBps)的理论观察结果,即排序(n log n/CPU_FREQ) 比排队发生得更快 (n/r),因此根本不应建立 QUEUE。

但是,我发现 Queue 总是在增加(在两个系统上运行 - 客户端和服务器 PC/笔记本电脑),

注意:当我在同一个系统上运行这些进程时,队列不会建立,而且大多数时候,它会下降到接近 1 - 20 个数据包。

需要有人检查/审查我的代码。

代码贴在这里:

  1. 客户(单类):

  2. 服务器(多类文件包:serverClasses:

  3. 持续 30 - 35 秒的 10MBps 和 10000 字节大小数据包的“QUEUE_LEN 与#PACKETS”示例图

enter image description here

最佳答案

在我看来,在客户端上,timeinterval 始终为 0。这是意图吗?你在代码中说秒但是你错过了 * 1000

timeInterval = 1 / ( noOfPacketsToBeSent );

然后调用 Thread.sleep((long) timeinterval)。由于 sleep() 需要 long 那么这将最多 hibernate 1ms,通常(我怀疑) hibernate 0ms。 sleep 只有毫秒分辨率。如果你想要纳秒分辨率,那么你必须做类似的事情:

   TimeUnit timeUnit = TimeUnit.NANOSECONDS;
...
timeUnit.sleep(50);

我怀疑当客户端和服务器都在同一个盒子上时,您的 CPU 会限制您的运行。当它们在不同的盒子上时,事情就会备份,因为客户端由于不正确的 hibernate 时间实际上正在淹没服务器。

至少这是我最好的猜测。

关于java - "Client - Server"性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com