扫码阅读
手机扫码阅读

随机方法性能差异

223 2024-04-13

本文作者之前探讨了三种从数组中随机取值的方法,并发现在CPU性能瓶颈下,使用随机数方法的性能明显低于其他两种。为了更准确地比较三种方法的性能差异,作者决定在低压力情况下重新进行测试。

用例设计

本次测试采用固定QPS模型,通过逐渐增加10ms的延迟来模拟接口响应耗时。测试过程中并未涉及数组取值环节,因为这一步骤对所有方法而言是相同的。测试代码使用Groovy编写,通过增加AtomicInteger或直接使用随机数获取数组索引,并在每次执行后增加固定延迟。

测试结果

测试数据通过Intellij的profiler工具获取,结果显示随机数方法的CPU消耗远高于int递增和AtomicInteger递增方法。具体数据表明,随着TPS(每秒事务数)的增加,随机数方法的CPU使用率也随之增加,而内存使用方面,随机数和int方案最大堆内存约为50M,AtomicInteger方案最大可达130M,但这一增量在可接受范围内。

作者还发现,测试顺序对结果有影响,若先进行高负载测试再进行低负载测试,或反之,结果表现出显著差异。这可能与活跃线程数的持续增长和线程切换有关。作者计划后续对此现象进行更深入的研究,并继续优化FunTester框架。

FunTester原创专题推荐

文章最后推荐了FunTester社区的相关专题内容,包括接口功能测试、性能测试、Groovy、Java、单元测试、UI自动化等多个领域的专题,旨在为读者提供更多测试相关的资源。

想要了解更多,点击 查看原文