使用代理的性能损失
Performance hit of using an agent
我正在评估一个通过检测字节码工作的产品。
我通过提供的代理程序启动我的应用程序,该代理程序检测字节码、配置文件并生成有关我的应用程序的报告。
确定 运行 代理施加的性能损失的最佳方法是什么?
如果我通过 JMH 在有和没有代理的情况下捕获我的应用程序中一些操作的延迟就足够了吗?
此外,使用执行字节码检测的代理是否存在预期的基准性能下降?
谢谢
您可以下载现有的 Java 性能基准,例如 SPECjvm2008 和 运行 它 with/without 您的代理。我不会 仅 编写源自您正在监视的应用程序的微基准测试,因为这可能不会突出该产品 (method/memory/system) 使用的各种操作和检测技术的瓶颈。
为典型代理人宣传的基准是 5%,我对这个数字持保留态度。
如果您的应用程序是某种服务器,您可以使用代理和 运行 单独的 JMH 基准来启动它,该基准将衡量对您的应用程序的调用。这样你的应用程序 运行 或没有此代理和基准代码都不会干扰它。但是你必须隔离很多因素,比如调用延迟、调用者的 cpu 使用情况(如果你 运行 调用者来自同一主机)、调用分配(你有很多不同的调用一台服务器,但在基准测试中只有几台),等等
相反,如果您在附加的进程代理内部进行基准测试,我不会相信这个结果,除非操作需要很长时间,例如 >5 毫秒。
我正在评估一个通过检测字节码工作的产品。 我通过提供的代理程序启动我的应用程序,该代理程序检测字节码、配置文件并生成有关我的应用程序的报告。
确定 运行 代理施加的性能损失的最佳方法是什么? 如果我通过 JMH 在有和没有代理的情况下捕获我的应用程序中一些操作的延迟就足够了吗? 此外,使用执行字节码检测的代理是否存在预期的基准性能下降?
谢谢
您可以下载现有的 Java 性能基准,例如 SPECjvm2008 和 运行 它 with/without 您的代理。我不会 仅 编写源自您正在监视的应用程序的微基准测试,因为这可能不会突出该产品 (method/memory/system) 使用的各种操作和检测技术的瓶颈。
为典型代理人宣传的基准是 5%,我对这个数字持保留态度。
如果您的应用程序是某种服务器,您可以使用代理和 运行 单独的 JMH 基准来启动它,该基准将衡量对您的应用程序的调用。这样你的应用程序 运行 或没有此代理和基准代码都不会干扰它。但是你必须隔离很多因素,比如调用延迟、调用者的 cpu 使用情况(如果你 运行 调用者来自同一主机)、调用分配(你有很多不同的调用一台服务器,但在基准测试中只有几台),等等
相反,如果您在附加的进程代理内部进行基准测试,我不会相信这个结果,除非操作需要很长时间,例如 >5 毫秒。