/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.text.DecimalFormat import java.util.* import org.apache.ofbiz.base.util.cache.UtilCache import org.apache.ofbiz.base.util.UtilValidate import org.apache.ofbiz.security.* import org.apache.ofbiz.entity.* import org.apache.ofbiz.base.util.* DecimalFormat decimalFormat = new DecimalFormat("#,##0.#######") if (security.hasPermission("ENTITY_MAINT", session)) { performanceList = [] calls = 1000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = delegator.findOne("JobSandbox", [jobId : "PURGE_OLD_JOBS"], false) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime/1000) perfRow = [:] perfRow.operation = "findOne(false)" perfRow.entity = "Large:JobSandbox" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 10000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = delegator.findOne("JobSandbox", [jobId : "PURGE_OLD_JOBS"], true) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "findOne(true)" perfRow.entity = "Large:JobSandbox" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 1000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = delegator.findOne("DataSourceType", [dataSourceTypeId : "ADMIN_ENTRY"], false) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "findOne(false)" perfRow.entity = "Small:DataSourceType" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 10000 startTime = System.currentTimeMillis() for (int i=0; i < calls; i++) { dummy = delegator.findOne("DataSourceType", [dataSourceTypeId : "ADMIN_ENTRY"], true) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "findOne(true)" perfRow.entity = "Small:DataSourceType" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) createTestList = [] calls = 1000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = delegator.makeValue("JobSandbox", [poolId : "pool", jobName : "Initial Name" + i, serviceName : "foo", statusId : "SERVICE_FINISHED", jobId : "_~WRITE_TEST~_" + i]) createTestList.add(dummy) delegator.create(dummy) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "create" perfRow.entity = "Large:JobSandbox" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 1000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = createTestList.get(i) dummy.jobName = "This was a test from the performance groovy script" dummy.store() } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "update" perfRow.entity = "Large:JobSandbox" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 1000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { dummy = createTestList.get(i) dummy.remove() } totalTime = System.currentTimeMillis() - startTime callsPerSecond = (double) calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "remove" perfRow.entity = "Large:JobSandbox" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 100000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { ptyMap = [:] ptyMap.dataSourceTypeId = "ADMIN_ENTRY" } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "new HashMap" perfRow.entity = "N/A" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 100000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { ptyMap = UtilMisc.toMap("dataSourceTypeId", "ADMIN_ENTRY") } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "UtilMisc.toMap" perfRow.entity = "N/A" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) utilCache = new UtilCache("test-cache", 0, 0, 0, false, null, "test-cache") utilCache.put("testName", "testValue") calls = 1000000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { utilCache.get("testName") } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "UtilCache.get(String) - basic settings" perfRow.entity = "N/A" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) testPk = delegator.makePK("DataSourceType", [dataSourceTypeId : "ADMIN_ENTRY"]) utilCache.put(testPk, "testValue") calls = 1000000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { utilCache.get(testPk) } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime/1000) perfRow = [:] perfRow.operation = "UtilCache.get(GenericPK) - basic settings" perfRow.entity = "N/A" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) calls = 1000000 startTime = System.currentTimeMillis() for (int i = 0; i < calls; i++) { utilCache.put(testPk, "testValue") } totalTime = System.currentTimeMillis() - startTime callsPerSecond = calls / (totalTime / 1000) perfRow = [:] perfRow.operation = "UtilCache.put(GenericPK) - basic settings" perfRow.entity = "N/A" perfRow.calls = decimalFormat.format(calls) perfRow.seconds = decimalFormat.format(totalTime / 1000) perfRow.secsPerCall = decimalFormat.format(1 / callsPerSecond) perfRow.callsPerSecond = decimalFormat.format(callsPerSecond) performanceList.add(perfRow) context.performanceList = performanceList }