jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From He Yin(测试部_贺寅) <he...@yihaodian.com>
Subject Re: Scripting language performance
Date Mon, 14 Jan 2013 10:16:08 GMT
Sorry, I'm not used to writing in plain text mode and missed my signature~

Best regards,
Joey He

>Hello,
>  In another thread, I noticed Philippe mentioned that " JSR223 Samplers + Groovy  + Caching"
is a better choice then Beanshell. Since I used a lot of Beanshell in my scripts and never
pay attention to it, I decided to make  an investigation of this issue. 
>  I simplified one of my beanshell script, rewrited it into groovy and rhino and put them
into script-samplers instead of  pre-processors. 
>The result turned out that
>1) Beanshell is better than other solutions
>2) Groovy and javascript will cause some gc problems.
>3) Groovy is the slowest.
>3) BSF and JSR223 seems that waste some cpu time on their framework.
>
>Am I  doing something wrong? 
>
>(Thread:10, Loop 500)
>Label	Samples	Average	Median	90%	Min	Max	Error%	Throughput	KB/sec	GC occurs
>JSR223-groovy	5000	59	39	119	6	3077	0	145.2137546	0	1~2
>JSR223-rhino	5000	2	1	2	0	314	0	851.9338899	0	frequently
>BeanShell Sampler	5000	1	1	2	0	402	0	1068.832835	0	0
>BSF-beanshell	5000	33	27	63	3	328	0	270.6506441	0	0
>BSF-javascript	5000	20	6	44	1	640	0	324.7174958	12.68427718	frequently
>
>Environments: JMeter 2.8,
>Uncomment " jsr223.compiled_scripts_cache_size" in jmeter.properties Groovy version: groovy-all-2.0.6
>JVM_OPTS:
>  set HEAP=-Xms512m -Xmx512m
>  set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
>  set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
>  set TENURING=-XX:MaxTenuringThreshold=2
>  set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
>  set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
>
>Script for Beanshell and groovy:
>for (int i=0;i<10;i++){
>  line="1027448,1".split(",");
>  pid=line[0];
>  mid=line[1];
>  vars.put("pid"+i,pid);
>  vars.put("mid"+i,mid);
>}
>cartParam="";
>for (int i=0;i<10;i++){
>  pid=vars.get("pid"+i);
>  mid=vars.get("mid"+i);
>  param=mid+"_"+pid+"_"+"0_0_1=1";
>  if (cartParam=="")
>    cartParam=param;
>  else
>    cartParam+=","+param;
>}
>vars.put("cartParam",cartParam);
>
>Script for rhino and javascript:
>for (var i=0;i<10;i++){
>  line="1027448,1".split(",");
>  pid=line[0];
>  mid=line[1];
>  vars.put("pid"+i,pid);
>  vars.put("mid"+i,mid);
>}
>var cartParam="";
>for (var i=0;i<10;i++){
>  pid=vars.get("pid"+i);
>  mid=vars.get("mid"+i);
>  param=mid+"_"+pid+"_"+"0_0_1=1";
>  if (cartParam=="")
>    cartParam=param;
>  else
>    cartParam+=","+param;
>}
>vars.put("cartParam",cartParam);
>

Mime
View raw message