【jmeter日常使用】Jmeter前后置使用beanshell、JSR223+groovy(groovy语法编写)、JSR223+groovy(java语法编写)、JSR223+groovy+静态编译、JSR223+beanshell性能对比及原理分析
实验设计
测试数据说明:通过一个循环从i=0到i=999,999(共1,000,000次迭代),每次将i加到sum上。计算从0到999,999所有整数的和耗时结果对比 统计执行结果不少于10次
执行方式 | 执行代码 | 执行耗时(s) |
beanshell | long start = System.currentTimeMillis(); int sum = 0; for (int i = 0; i < 1000000; i++) { sum += i; } long end = System.currentTimeMillis(); log.info("*************beanshell解析执行 int 耗时: " + (end - start) + " ms"); |
386 |
JSR223+groovy(groovy语法编写-动态类型生命) | def start = System.currentTimeMillis() def sum = 0 for (def i = 0; i < 1_000_000; i++) { sum += i } def end = System.currentTimeMillis() log.info("**********groovy+groovy语法 def 耗时: ${end - start} ms") |
19 |
JSR223+groovy(java语法编写-显式声明) | long start = System.currentTimeMillis() int sum = 0 for (int i = 0; i < 1000000; i++) { sum += i } long end = System.currentTimeMillis() log.info("************groovy写java语法 int 耗时: ${end - start} ms") |
4 |
JSR223+groovy+静态编译注解 | @groovy.transform.CompileStatic def withDef() { Logger log = LogManager.getLogger("tets") log.info("***************************************************"); def start = System.currentTimeMillis() def sum = 0 for (def i = 0; i < 1_000_000; i++) { sum += i } def end = System.currentTimeMillis() log.info("=============================groovy语法def 耗时+静态编译注解: ${end - start} ms") } |
4 |
JSR223+beanshell | long start = System.currentTimeMillis(); int sum = 0; for (int i = 0; i < 1000000; i++) { sum += i; } long end = System.currentTimeMillis(); log.info("++++++++JSR223+beanshell解析执行 int 耗时: " + (end - start) + " ms"); |
378 |
- 通过以上执行结果统计可见:【JSR223+groovy(java语法编写)】≈【JSR223+groovy+静态编译注解】> 【JSR223+groovy(groovy语法编写)】>【beanshell】约等于【JSR223+beanshell】|
原理分析
执行方式 | 原理分析 |
beanshell |
|
JSR223+groovy(groovy语法编写) |
|
JSR223+groovy(java语法编写) |
|
JSR223+groovy+静态编译注解 | @groovy.transform.CompileStatic 走Java的静态编译方式 |
JSR223+beanshell | 走beanshell的解析执行 |
更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:
记录工作中使用的CI/CD流程
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步