gpt4 book ai didi

java - JVM 方法调用和远程调用在性能上有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:00 27 4
gpt4 key购买 nike

我正在收集一些关于 JVM 方法调用和使用二进制协议(protocol)(换句话说,不是 SOAP)的远程方法调用之间性能差异的数据。我正在开发一个框架,其中方法调用可以由框架自行决定是本地的还是远程的,我想知道在什么时候远程评估该方法是“值得的”,无论是在更快的服务器上还是在计算某种网格。我知道远程调用会慢得多,所以我最感兴趣的是理解数量级的差异。是慢了 10 倍,还是慢了 100 倍,还是慢了 1000 倍?有人有这方面的数据吗?如有必要,我会编写自己的基准,但我希望重新使用一些现有知识。谢谢!

最佳答案

开发了低延迟 RMI(最少约 20 微秒),它仍然比直接调用慢 1000 倍。如果您使用纯 Java RMI,(至少 500 微秒)它可能会慢 25,000 倍。

注意:这只是一个非常粗略的估计,目的是让您大致了解您可能会看到的差异。有许多复杂的因素可能会显着改变这些数字。根据方法的不同,差异可能会小得多,尤其是如果您对同一进程执行 RMI,如果网络相对较慢,差异可能会大得多。

此外,即使存在非常大的相对差异,它也可能不会对您的整个应用程序产生太大影响。


详细说明我最后的评论...

假设您有一个 GUI,它必须每秒轮询一些数据,并且它使用后台线程来执行此操作。假设使用 RMI 需要 50 毫秒,而替代方案是对分布式缓存的本地副本进行直接方法调用需要 0.0005 毫秒。这似乎是一个巨大的差异,100,000 倍。然而,RMI 调用可以提前 50 毫秒开始,仍然每秒轮询一次,这对用户来说几乎没有区别。

更重要的是,与使用其他方法相比,RMI 更简单(如果它是完成工作的正确工具)

使用 RMI 的替代方法是使用 JMS。哪个最好取决于您的情况。

关于java - JVM 方法调用和远程调用在性能上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538951/

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