Coding测试

知识储备深度,决定测试深度!

【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语法编写)
  • Groovy 是一种基于 Java 虚拟机JVM 的动态编程语言,它结合了 动态语言的灵活性静态语言的性能(通过编译优化)
  • 动态调用开销:默认情况下,Groovy 的方法调用通过反射或动态分发实现,比 Java 的静态调用慢
JSR223+groovy(java语法编写)
  • Java 语言属于静态类型语言(静态编译> 动态语言
JSR223+groovy+静态编译注解
@groovy.transform.CompileStatic
走Java的静态编译方式
JSR223+beanshell
走beanshell的解析执行


更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:
Coding测试

posted @ 2025-03-29 14:27  Coding测试  阅读(72)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示