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