/******************************************************************************* * Copyright (c) 2010 Association for Decentralized Information Management in * Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.databoard.tests; import java.io.File; import java.util.TreeMap; import org.simantics.databoard.Accessors; import org.simantics.databoard.Bindings; import org.simantics.databoard.accessor.file.FileMapAccessor; import org.simantics.databoard.accessor.file.FileRecordAccessor; import org.simantics.databoard.accessor.file.FileVariantAccessor; import org.simantics.databoard.annotations.Optional; import org.simantics.databoard.binding.Binding; import org.simantics.databoard.binding.util.RandomValue; import org.simantics.databoard.type.Datatype; import org.simantics.databoard.type.LongType; public class PerformanceTest { public static class FloatSample { public float value; } public static class IntegerSample { public int value; } public static class FloatRecord { public Object id; public TreeMap displayNames; public SamplingParameters samplingParameters; public TreeMap samples; } public static class IntegerRecord { public Object id; public TreeMap displayNames; public SamplingParameters samplingParameters; public TreeMap samples; } public static class SamplingParameters { public @Optional Object deadband; public @Optional Object interval; } public static class LocalizedText { public String locale; public String text; } public static void main(String[] args) throws Exception { // Init Datatype time_type = new LongType("ms"); Binding time_binding = Bindings.getBinding( Long.class ); Binding float_sample_binding = Bindings.getBinding( FloatSample.class); Binding integer_sample_binding = Bindings.getBinding( IntegerSample.class); Binding float_record_binding = Bindings.getBinding( FloatRecord.class ); Binding integer_record_binding = Bindings.getBinding( IntegerRecord.class ); // Test variables int var_count = 1000; long interval = 10; long duration = 10000000;//10*60*60*1000; // ms int block_size = 100; long steps = duration / interval; long iterations = steps / block_size; System.out.println("Performance Test"); System.out.println(" o variables = "+var_count); System.out.println(" o duration = "+duration/1000+" s"); System.out.println(" o interval = "+interval+" ms"); System.out.println(" o samples_in_write = "+block_size); System.out.println(" o At each step, a single sample is appended."); // Prepare files System.out.println(" o Initialization."); FileRecordAccessor[] variables = new FileRecordAccessor[var_count]; FileMapAccessor[] maps = new FileMapAccessor[var_count]; for (int i=0; i.dat File file = File.createTempFile("variable"+i, ".tmp"); file.deleteOnExit(); FileVariantAccessor fa = Accessors.createFile(file); // Make it a record Binding record_binding = i