package my.test.mvstore; import java.util.Random; import my.test.TestBase; public class PerformanceTest extends TestBase { public static void main(String[] args) throws Exception { new PerformanceTest().start(); } @Override public void startInternal() throws Exception { run(null); run("org.h2.mvstore.db.MVTableEngine"); } public void run(String engine) throws Exception { stmt.executeUpdate("DROP TABLE IF EXISTS PerformanceTest CASCADE"); sql = "CREATE TABLE IF NOT EXISTS PerformanceTest(id int, name varchar(500), b boolean)"; if (engine != null) sql += " ENGINE \"" + engine + "\""; if (engine == null) engine = "[PageStore]"; else engine = "[MVStore ]"; stmt.executeUpdate(sql); stmt.executeUpdate("CREATE INDEX IF NOT EXISTS idx_PerformanceTest_id ON PerformanceTest(id)"); int count = 5000; long t1 = System.currentTimeMillis(); for (int i = 0, size = count / 5; i < size; i++) { stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(10, 'a1', true)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(20, 'b1', true)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(30, 'a2', false)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(40, 'b2', true)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(50, 'a3', false)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(60, 'b3', true)"); stmt.executeUpdate("insert into PerformanceTest(id, name, b) values(70, 'b3', true)"); } long t2 = System.currentTimeMillis(); System.out.println(engine + " insert: " + (t2 - t1) + " ms"); t1 = System.currentTimeMillis(); Random r = new Random(); for (int i = 0; i < count; i++) { stmt.executeQuery("select * from PerformanceTest where id=" + r.nextInt(count)); } t2 = System.currentTimeMillis(); System.out.println(engine + " select: " + (t2 - t1) + " ms"); } }