是否有参考列出了通过网络(udp 与 tcp/ip)、磁盘、内存(顺序/随机访问)、进程内与进程间等传输信息大约需要多长时间(以相对或绝对术语) .?
最终我将不得不测量这些,但我会欣赏指向球场数字的指针。
内存 vs 磁盘并不难找到,但我想了解其余数字的方位。
是否有参考列出了通过网络(udp 与 tcp/ip)、磁盘、内存(顺序/随机访问)、进程内与进程间等传输信息大约需要多长时间(以相对或绝对术语) .?
最终我将不得不测量这些,但我会欣赏指向球场数字的指针。
内存 vs 磁盘并不难找到,但我想了解其余数字的方位。
我还没有遇到过这样的事情,我认为除了测试您的特定场景之外没有其他方法。涉及的因素太多,无法给出一致的答案:例如,您使用的是什么 NIC,他们是否在执行 TCP 校验和卸载,您的交换结构的性能如何,您使用的是什么磁盘,它们有多少缓存,有多少数据你是在传输,很多小包还是几个大包等等,等等。
当您谈论 RAM 访问时间时,您现在谈论的是 10-100ns,而硬盘驱动器可能约为 4-8ms。任何基准测试工具都应该为您提供良好的 RAM 和硬盘测量结果
另一方面,UDP 与 TCP,你真的不能给出任何具体的数字。理论上 UDP 应该比 TCP 快 30-50%,因为它缺少 ACK 的额外行程并且具有较小的标头开销,但实际上有很多情况下 TCP 会因为拥塞控制而胜过 UDP。此外,带有 Nagle 的 TCP 打开了批量数据包,这与不这样做的 UDP 相比也不是公平的。
总而言之,真正根据自己的需要做自己的测试。即使在运行类似测试的人的某个地方有一个基准表,它们也可能对您的应用程序和硬件堆栈完全无效且不可重现
为汤姆 +1 - 这就是我在看到他的答案之前要写的(只是不太清楚)。
另一件需要考虑的事情是
延迟需求与带宽需求
给定解决方案的可扩展性。例如
升级网络速度(是否需要更换网卡?布线?路由器?)与可能规模(100Mb 与 1Gb)的难度有多大?
升级磁盘速度与提高速度的回报有多难?
例如,更快的磁盘、具有更大缓存的磁盘(假设您的用例针对可缓存数据、RAID 或其他数据条带化、本地存储与网络存储)。
换句话说,您今天的情况可能表明,确切的指标表明磁盘是所有考虑的最佳解决方案,但您很少能将磁盘性能提高 10 倍,而如果确实需要,您可以通过网络合理地做到这一点。