I think I've read that instantiating the Calendar is quite resource intensive, lots of classes being loaded etc. So if you could share that instance between iterations, and perhaps between threads, that could help.
But I guess that interpreting the bean shell is what takes the most time.

Alf

Stuart Findlay wrote:
Hi all

I'm looking for some answers and opinions in relation to using BeanShell
functions and the efficiency of JMeter scripts calling them.

I'm load testing a calendar application and need to generate and
manipulate random dates in the iCal DTSTAMP format i.e. 20070910T090800Z
for the time of writing this mail.

I found that for some of the more complex operations such as generating
random dates within a given timeframe and then adding hours, days or
weeks onto these it was very cumbersome to do this using JMeter alone so
I settled on BeanShell functions using the Calendar class to manipulate
dates and the following functions to convert the dates:


// Convert Java Calendar object to iCal timestamp
String calendarToTS(Calendar cal) {
String ret = String.format("%1$tY%1$tm%1$tdT%1$tH%1$tM%1$tSZ", new Object[] {cal}); return ret;
}

// Convert iCal timestamp to Java Calendar object
Calendar tsToCalendar(String ts) {
    Calendar ret = Calendar.getInstance();
ret.set(Calendar.YEAR, new Integer(ts.substring(0,4)));
    ret.set(Calendar.MONTH, new Integer(ts.substring(4,6)) - 1);
    ret.set(Calendar.DATE, new Integer(ts.substring(6,8)));
    ret.set(Calendar.HOUR_OF_DAY, new Integer(ts.substring(9,11)));
    ret.set(Calendar.MINUTE, new Integer(ts.substring(11,13)));
    ret.set(Calendar.SECOND, new Integer(ts.substring(13,15)));
return ret; }



When I run a load test the jmeter process uses about 90% of the cpu on a 4 CPU solaris box which would normally only see about 20% load with an equivalent script which doesn't call any BeanShell functions.

Does anyone have any suggestions for a more efficient way off accessing Java functionality from JMeter.

Thanks, Stuart

ps - apologies for the half message sent by mistake beforehand.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to