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);
>