Timing code ('shootout'):
The code below will run a BO Update 100 times and report the amount of time taken. Note the 5 "warmup" executions before the repeated 100 runs.
public void testMultiplePluginScripts() throws Exception {
String docString1 = "<DR_ShortCreateIntervalRecords><factId>219250542869</factId><longDescr>REEE</longDescr></DR_ShortCreateIntervalRecords>";
Document doc1 = DocumentHelper.parseText(docString1);
String docString2 = "<DR_ShortCreateIntervalRecords2><factId>219250542869</factId><longDescr>REEE</longDescr></DR_ShortCreateIntervalRecords2>";
Document doc2 = DocumentHelper.parseText(docString2);
// warmups
for (int i = 0; i < 5; i++) {
BusinessObjectDispatcher.execute(doc1, BusinessObjectActionLookup.constants.FAST_UPDATE);
rollbackAndContinue();
BusinessObjectDispatcher.execute(doc2, BusinessObjectActionLookup.constants.FAST_UPDATE);
rollbackAndContinue();
}
long totalElapsed = 0;
// speed
for (int i = 0; i < 100; i++) {
long start = System.nanoTime();
BusinessObjectDispatcher.execute(doc1, BusinessObjectActionLookup.constants.FAST_UPDATE);
flush();
totalElapsed += System.nanoTime() - start;
rollbackAndContinue();
}
System.out.println("Script (100): " + totalElapsed / 1000000 + "ms");
totalElapsed = 0;
for (int i = 0; i < 100; i++) {
long start = System.nanoTime();
BusinessObjectDispatcher.execute(doc2, BusinessObjectActionLookup.constants.FAST_UPDATE);
flush();
totalElapsed += System.nanoTime() - start;
rollbackAndContinue();
}
System.out.println("Java (100): " + totalElapsed / 1000000 + "ms");
}