Hello, I just tested a simple test plan with JMeter nightly build / GUI Mode on Mac OSX :
-server -Xmx512m -Xms512m -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 -Duser.language=en -Duser.language=en -Duser.region=EN 1) - JSR223 Sampler with your code - Aggregate Report 2) - Beanshell Sampler with your code - Aggregate Report Results for JSR223 + GROOVY + Cache key Label / Samples / Average / Median / 90%Line / Min /Max / Error% / Throughput / KB/Sec JSR223 Sampler / 5000 / 0 / 0 / 1 / 0 / 16 / 0.0 / 2820.1 / 0.0 Results for Beanshell Sampler : Label / Samples / Average / Median / 90%Line / Min /Max / Error% / Throughput / KB/Sec BeanShell Sampler / 5000 / 22 / 21 / 37 / 2 / 136 / 0.0 / 389.9 / 0.0 So for me *JSR223+Groovy+Caching* is way better provided *provided Caching is active*, when it's not then results are the following : Label / Samples / Average / Median / 90%Line / Min /Max / Error% / Throughput / KB/Sec JSR223 Sampler / 5000 / 99 / 67 / 177 / 7 / 4723 / 0.0 / 86.9 / 0.0 Regards Philippe UBIK-INGENIERIE on TWITTER <https://twitter.com/ubikingenierie> UBIK LOAD PACK BLOG <http://www.ubik-ingenierie.com/blog/> On Mon, Jan 14, 2013 at 9:24 PM, Philippe Mouawad < [email protected]> wrote: > Hello, > Sorry I read your mail too fast. > My questions: > > - Where did you put the Groovy script code (in text area or in file )? > > > Could you try it with JMeter nightly build ? > > Thanks > Regards > Philippe > > > On Mon, Jan 14, 2013 at 12:37 PM, Philippe Mouawad < > [email protected]> wrote: > >> Hello, >> I would be very interested in the Test Plan you used. >> Which version did you use ? Nightly or 2.8 ? >> If 2.8, where did you put the script code (in text or in file )? >> >> The tests I made (where the script part was not very consequent) showed >> JSR223 + GROOVY + CACHING as the best option and showed better results than >> Beanshell. >> >> I am not surprised about javascript not being the good one but other >> results surprise me a bit. >> >> Regards >> Philippe >> >> >> >> >> >> >> On Mon, Jan 14, 2013 at 11:16 AM, He Yin(测试部_贺寅) <[email protected]>wrote: >> >>> 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); >>> > >>> >>> >> >> >> -- >> Cordialement. >> Philippe Mouawad. >> >> >> > > > -- > Cordialement. > Philippe Mouawad. > > > -- Cordialement. Philippe Mouawad. Ubik-Ingénierie UBIK-INGENIERIE on TWITTER <https://twitter.com/ubikingenierie> UBIK LOAD PACK BLOG <http://www.ubik-ingenierie.com/blog/>
