亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? microperformanceregressiontest.java

?? mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序
?? JAVA
字號:
/*
 Copyright (C) 2002-2004 MySQL AB

 This program is free software; you can redistribute it and/or modify
 it under the terms of version 2 of the GNU General Public License as 
 published by the Free Software Foundation.

 There are special exceptions to the terms and conditions of the GPL 
 as it is applied to this software. View the full text of the 
 exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
 software distribution.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA



 */
package testsuite.regression;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import testsuite.BaseTestCase;

/**
 * Microperformance benchmarks to track increase/decrease in performance of core
 * methods in the driver over time.
 * 
 * @author Mark Matthews
 * 
 * @version $Id: MicroPerformanceRegressionTest.java,v 1.1.2.1 2005/05/13
 *          18:58:38 mmatthews Exp $
 */
public class MicroPerformanceRegressionTest extends BaseTestCase {

	private double scaleFactor = 1.0;

	private final static int ORIGINAL_LOOP_TIME_MS = 2300;

	private final static double LEEWAY = 3.0;

	private final static Map BASELINE_TIMES = new HashMap();

	static {
		BASELINE_TIMES.put("ResultSet.getInt()", new Double(0.00661));
		BASELINE_TIMES.put("ResultSet.getDouble()", new Double(0.00671));
		BASELINE_TIMES.put("ResultSet.getTime()", new Double(0.02033));
		BASELINE_TIMES.put("ResultSet.getTimestamp()", new Double(0.02363));
		BASELINE_TIMES.put("ResultSet.getDate()", new Double(0.02223));
		BASELINE_TIMES.put("ResultSet.getString()", new Double(0.00982));
		BASELINE_TIMES.put("ResultSet.getObject() on a string", new Double(
				0.00861));
		BASELINE_TIMES
				.put("Connection.prepareStatement()", new Double(0.18547));
		BASELINE_TIMES.put("PreparedStatement.setInt()", new Double(0.0011));
		BASELINE_TIMES
				.put("PreparedStatement.setDouble()", new Double(0.00671));
		BASELINE_TIMES.put("PreparedStatement.setTime()", new Double(0.0642));
		BASELINE_TIMES.put("PreparedStatement.setTimestamp()", new Double(
				0.03184));
		BASELINE_TIMES.put("PreparedStatement.setDate()", new Double(0.12248));
		BASELINE_TIMES
				.put("PreparedStatement.setString()", new Double(0.01512));
		BASELINE_TIMES.put("PreparedStatement.setObject() on a string",
				new Double(0.01923));
		BASELINE_TIMES.put("single selects", new Double(46));
		BASELINE_TIMES.put("5 standalone queries", new Double(146));
		BASELINE_TIMES.put("total time all queries", new Double(190));
	}

	public MicroPerformanceRegressionTest(String name) {
		super(name);
	}

	/**
	 * Runs all test cases in this test suite
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		junit.textui.TestRunner.run(MicroPerformanceRegressionTest.class);
	}

	/**
	 * Tests result set accessors performance.
	 * 
	 * @throws Exception
	 *             if the performance of these methods does not meet
	 *             expectations.
	 */
	public void testResultSetAccessors() throws Exception {
		try {
			this.stmt.executeUpdate("DROP TABLE IF EXISTS marktest");
			this.stmt
					.executeUpdate("CREATE TABLE marktest(intField INT, floatField DOUBLE, timeField TIME, datetimeField DATETIME, stringField VARCHAR(64))");
			this.stmt
					.executeUpdate("INSERT INTO marktest VALUES (123456789, 12345.6789, NOW(), NOW(), 'abcdefghijklmnopqrstuvABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@')");

			this.rs = this.stmt
					.executeQuery("SELECT intField, floatField, timeField, datetimeField, stringField FROM marktest");

			this.rs.next();

			int numLoops = 100000;

			long start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getInt(1);
			}

			double getIntAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getInt()", getIntAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getDouble(2);
			}

			double getDoubleAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getDouble()", getDoubleAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getTime(3);
			}

			double getTimeAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getTime()", getTimeAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getTimestamp(4);
			}

			double getTimestampAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getTimestamp()", getTimestampAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getDate(4);
			}

			double getDateAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getDate()", getDateAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getString(5);
			}

			double getStringAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getString()", getStringAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				this.rs.getObject(5);
			}

			double getStringObjAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("ResultSet.getObject() on a string", getStringObjAvgMs);
		} finally {
			this.stmt.executeUpdate("DROP TABLE IF EXISTS marktest");
		}
	}

	public void testPreparedStatementTimes() throws Exception {
		try {
			this.stmt.executeUpdate("DROP TABLE IF EXISTS marktest");
			this.stmt
					.executeUpdate("CREATE TABLE marktest(intField INT, floatField DOUBLE, timeField TIME, datetimeField DATETIME, stringField VARCHAR(64))");
			this.stmt
					.executeUpdate("INSERT INTO marktest VALUES (123456789, 12345.6789, NOW(), NOW(), 'abcdefghijklmnopqrstuvABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@')");

			long start = System.currentTimeMillis();

			long blockStart = System.currentTimeMillis();
			long lastBlock = 0;

			int numLoops = 100000;

			int numPrepares = 100000;

			if (versionMeetsMinimum(4, 1)) {
				numPrepares = 10000; // we don't need to do so many for
				// server-side prep statements...
			}

			for (int i = 0; i < numPrepares; i++) {
				if (i % 1000 == 0) {

					long blockEnd = System.currentTimeMillis();

					long totalTime = blockEnd - blockStart;

					blockStart = blockEnd;

					StringBuffer messageBuf = new StringBuffer();

					messageBuf.append(i
							+ " prepares, the last 1000 prepares took "
							+ totalTime + " ms");

					if (lastBlock == 0) {
						lastBlock = totalTime;
						messageBuf.append(".");
					} else {
						double diff = (double) totalTime / (double) lastBlock;

						messageBuf.append(", difference is " + diff + " x");

						lastBlock = totalTime;
					}

					System.out.println(messageBuf.toString());

				}

				PreparedStatement pStmt = this.conn
						.prepareStatement("INSERT INTO test.marktest VALUES (?, ?, ?, ?, ?)");
				pStmt.close();
			}

			double getPrepareStmtAvgMs = (double) (System.currentTimeMillis() - start)
					/ numPrepares;

			// checkTime("Connection.prepareStatement()", getPrepareStmtAvgMs);

			PreparedStatement pStmt = this.conn
					.prepareStatement("INSERT INTO marktest VALUES (?, ?, ?, ?, ?)");

			System.out.println(pStmt.toString());

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				pStmt.setInt(1, 1);
			}

			System.out.println(pStmt.toString());

			double setIntAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setInt()", setIntAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				pStmt.setDouble(2, 1234567890.1234);
			}

			double setDoubleAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setDouble()", setDoubleAvgMs);
			
			start = System.currentTimeMillis();

			Time tm = new Time(start);

			for (int i = 0; i < numLoops; i++) {
				pStmt.setTime(3, tm);
			}

			double setTimeAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setTime()", setTimeAvgMs);

			start = System.currentTimeMillis();

			Timestamp ts = new Timestamp(start);

			for (int i = 0; i < numLoops; i++) {
				pStmt.setTimestamp(4, ts);
			}

			double setTimestampAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setTimestamp()", setTimestampAvgMs);

			start = System.currentTimeMillis();

			Date dt = new Date(start);

			for (int i = 0; i < numLoops; i++) {
				pStmt.setDate(4, dt);
			}

			double setDateAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setDate()", setDateAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				pStmt
						.setString(5,
								"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@");
			}

			double setStringAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setString()", setStringAvgMs);

			start = System.currentTimeMillis();

			for (int i = 0; i < numLoops; i++) {
				pStmt
						.setObject(5,
								"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@");
			}

			double setStringObjAvgMs = (double) (System.currentTimeMillis() - start)
					/ numLoops;

			checkTime("PreparedStatement.setObject() on a string",
					setStringObjAvgMs);

			start = System.currentTimeMillis();

		} finally {
			this.stmt.executeUpdate("DROP TABLE IF EXISTS marktest");
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see junit.framework.TestCase#setUp()
	 */
	public void setUp() throws Exception {
		super.setUp();

		System.out.println("Calculating performance scaling factor...");
		// Run this simple test to get some sort of performance scaling factor,
		// compared to
		// the development environment. This should help reduce false-positives
		// on this test.
		int numLoops = 10000;

		long start = System.currentTimeMillis();

		for (int j = 0; j < 2000; j++) {
			StringBuffer buf = new StringBuffer(numLoops);

			for (int i = 0; i < numLoops; i++) {
				buf.append('a');
			}
		}

		long elapsedTime = System.currentTimeMillis() - start;

		System.out.println("Elapsed time for factor: " + elapsedTime);

		this.scaleFactor = (double) elapsedTime
				/ (double) ORIGINAL_LOOP_TIME_MS;

		System.out
				.println("Performance scaling factor is: " + this.scaleFactor);
	}

	private void checkTime(String testType, double avgExecTimeMs)
			throws Exception {
		
		double adjustForVendor = 1.0D;

		if (isRunningOnJRockit()) {
			adjustForVendor = 4.0D;
		}

		Double baselineExecTimeMs = (Double) BASELINE_TIMES.get(testType);

		if (baselineExecTimeMs == null) {
			throw new Exception("No baseline time recorded for test '"
					+ testType + "'");
		}

		double acceptableTime = LEEWAY * baselineExecTimeMs.doubleValue()
				* this.scaleFactor * adjustForVendor;

		assertTrue("Average execution time of " + avgExecTimeMs
				+ " ms. exceeded baseline * leeway of " + acceptableTime
				+ " ms.", (avgExecTimeMs <= acceptableTime));
	}

	public void testBug6359() throws Exception {
		if (runLongTests()) {
			int numRows = 550000;
			int numSelects = 100000;

			try {
				this.stmt.executeUpdate("DROP TABLE IF EXISTS testBug6359");
				this.stmt
						.executeUpdate("CREATE TABLE testBug6359 (pk_field INT PRIMARY KEY NOT NULL AUTO_INCREMENT, field1 INT, field2 INT, field3 INT, field4 INT, field5 INT, field6 INT, field7 INT, field8 INT, field9 INT,  INDEX (field1))");

				PreparedStatement pStmt = this.conn
						.prepareStatement("INSERT INTO testBug6359 (field1, field2, field3, field4, field5, field6, field7, field8, field9) VALUES (?, 1, 2, 3, 4, 5, 6, 7, 8)");

				logDebug("Loading " + numRows + " rows...");

				for (int i = 0; i < numRows; i++) {
					pStmt.setInt(1, i);
					pStmt.executeUpdate();

					if ((i % 10000) == 0) {
						logDebug(i + " rows loaded so far");
					}
				}

				logDebug("Finished loading rows");

				long begin = System.currentTimeMillis();

				long beginSingleQuery = System.currentTimeMillis();

				for (int i = 0; i < numSelects; i++) {
					this.rs = this.stmt
							.executeQuery("SELECT pk_field FROM testBug6359 WHERE field1 BETWEEN 1 AND 5");
				}

				long endSingleQuery = System.currentTimeMillis();

				double secondsSingleQuery = ((double) endSingleQuery - (double) beginSingleQuery) / 1000;

				logDebug("time to execute " + numSelects + " single queries: "
						+ secondsSingleQuery + " seconds");

				checkTime("single selects", secondsSingleQuery);

				PreparedStatement pStmt2 = this.conn
						.prepareStatement("SELECT field2, field3, field4, field5 FROM testBug6359 WHERE pk_field=?");

				long beginFiveQueries = System.currentTimeMillis();

				for (int i = 0; i < numSelects; i++) {

					for (int j = 0; j < 5; j++) {
						pStmt2.setInt(1, j);
						pStmt2.executeQuery();
					}
				}

				long endFiveQueries = System.currentTimeMillis();

				double secondsFiveQueries = ((double) endFiveQueries - (double) beginFiveQueries) / 1000;

				logDebug("time to execute " + numSelects
						+ " 5 standalone queries: " + secondsFiveQueries
						+ " seconds");

				checkTime("5 standalone queries", secondsFiveQueries);

				long end = System.currentTimeMillis();

				double seconds = ((double) end - (double) begin) / 1000;

				logDebug("time to execute " + numSelects + " selects: "
						+ seconds + " seconds");

				checkTime("total time all queries", seconds);
			} finally {
				this.stmt.executeUpdate("DROP TABLE IF EXISTS testBug6359");
			}
		}
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人在线视频首页| 成人avav在线| 国内精品免费**视频| 久久99精品国产.久久久久久| 日韩成人一级片| 久久99国内精品| 91在线视频播放地址| 欧美精品在欧美一区二区少妇| 欧美成人猛片aaaaaaa| 国产精品美女久久久久久| 国产精品二区一区二区aⅴ污介绍| 一区二区三区日韩在线观看| 久久精品999| 91在线观看美女| 日韩一区二区电影网| 国产精品久久久久久妇女6080| 图片区小说区区亚洲影院| 韩国女主播一区二区三区| 成人黄色一级视频| 在线免费不卡视频| 欧美激情在线看| 久久99精品久久久久婷婷| 欧美性一二三区| 国产精品国产三级国产有无不卡| 奇米综合一区二区三区精品视频| aaa欧美日韩| 国产精品美日韩| 国产乱码一区二区三区| 亚洲精品在线免费播放| 久久成人免费网| 欧美一区二区三区四区五区 | 成人午夜视频福利| 2020日本不卡一区二区视频| 日韩高清在线电影| 日韩欧美国产午夜精品| 黑人巨大精品欧美黑白配亚洲| 欧美日韩1234| 视频一区二区中文字幕| 欧美美女一区二区| 精品午夜久久福利影院| 国产日韩高清在线| 99re在线精品| 亚洲高清免费视频| 制服丝袜一区二区三区| 激情久久久久久久久久久久久久久久| 日韩精品一区二区三区视频播放| 精品一区二区久久| 亚洲欧洲在线观看av| 日本高清免费不卡视频| 久久国产精品露脸对白| 国产精品久久久久aaaa| 欧美女孩性生活视频| 国产大陆精品国产| 亚洲成精国产精品女| 久久精品视频在线免费观看| 在线视频亚洲一区| www.久久精品| 国产麻豆精品在线| 亚洲一二三四区不卡| 久久久噜噜噜久久人人看| 欧美日韩免费观看一区二区三区 | 国产在线不卡一区| 亚洲一级片在线观看| 中文字幕一区二区三区在线播放| 日韩一区二区在线看| 欧美色综合网站| 欧美中文字幕一区二区三区 | 亚洲尤物在线视频观看| 日韩午夜精品视频| 在线观看不卡一区| 欧美性感一区二区三区| 不卡视频免费播放| 久久国产精品99久久久久久老狼| 亚洲欧洲av另类| 欧美韩国日本一区| 精品国产免费久久| 91精品国产aⅴ一区二区| 91丝袜国产在线播放| 国产v综合v亚洲欧| 日韩av电影免费观看高清完整版在线观看| 中文字幕不卡在线播放| 久久精品亚洲一区二区三区浴池| 欧美精品自拍偷拍| 欧美一区二区三区视频免费播放 | 国产乱对白刺激视频不卡| 麻豆国产欧美日韩综合精品二区 | 欧美久久高跟鞋激| 这里只有精品免费| 久久综合久久鬼色| 中文字幕一区二区三区不卡在线| 国产精品国产三级国产aⅴ入口 | 中文字幕视频一区| 亚洲动漫第一页| 亚洲高清免费观看| 国产在线视频不卡二| 99久久精品免费精品国产| 欧美日韩高清一区| 国产精品美女一区二区| 欧美aaaaa成人免费观看视频| caoporm超碰国产精品| 欧美性一级生活| 国产欧美一区二区三区沐欲| **性色生活片久久毛片| 婷婷综合久久一区二区三区| 国产在线视视频有精品| 欧美系列在线观看| 久久精品在这里| 亚洲精品一二三四区| 日韩精品视频网站| 91麻豆产精品久久久久久| 欧美无人高清视频在线观看| 国产视频一区二区三区在线观看| 国产精品每日更新在线播放网址| 一区二区三区中文字幕精品精品| 国内久久精品视频| 欧美精品三级在线观看| 亚洲女人小视频在线观看| 国产91在线看| 精品国产亚洲在线| 美女脱光内衣内裤视频久久网站 | 中文字幕永久在线不卡| 激情六月婷婷久久| 日韩一区二区电影网| 蜜臀va亚洲va欧美va天堂| 欧美视频一区二区在线观看| 亚洲日本青草视频在线怡红院 | 五月婷婷久久综合| 欧美日韩一级二级三级| 婷婷国产在线综合| 欧美日本视频在线| 日韩激情中文字幕| 欧美大黄免费观看| 国产精品99久久久久久久女警| 7777精品伊人久久久大香线蕉经典版下载| 国产精品乱码妇女bbbb| 国产91清纯白嫩初高中在线观看 | 91亚洲精品久久久蜜桃| 夜夜亚洲天天久久| 欧美日韩成人综合| 九九视频精品免费| 国产精品国产精品国产专区不蜜 | 成人av电影免费在线播放| 亚洲高清久久久| 中文一区二区在线观看| 成人黄色网址在线观看| ...av二区三区久久精品| 日韩午夜中文字幕| 色琪琪一区二区三区亚洲区| 国产综合成人久久大片91| 中文字幕日韩欧美一区二区三区| 欧洲人成人精品| 91麻豆免费观看| 大美女一区二区三区| 日本欧美一区二区三区乱码 | 成人综合婷婷国产精品久久蜜臀| 亚洲成人精品一区| 亚洲一二三专区| 亚洲欧美电影一区二区| 日韩欧美在线网站| 在线播放日韩导航| 91行情网站电视在线观看高清版| 国产精品一区二区男女羞羞无遮挡| 夜夜嗨av一区二区三区四季av| 中文字幕亚洲综合久久菠萝蜜| 日韩精品资源二区在线| 欧美精品一二三| 日韩欧美在线影院| 国产欧美一区二区在线| 日韩欧美的一区| 日韩欧美色综合| wwwwww.欧美系列| 精品理论电影在线| 日韩午夜激情免费电影| 欧美一区二区三区在线电影 | 亚洲欧洲av另类| 亚洲自拍偷拍麻豆| 蜜臀av亚洲一区中文字幕| 国产不卡视频在线播放| 91丝袜呻吟高潮美腿白嫩在线观看| 91高清视频在线| 欧美mv日韩mv国产网站| 亚洲高清免费一级二级三级| 国产成人精品免费| 日韩一区二区三区观看| 亚洲精品免费一二三区| 成人免费毛片a| 亚洲精品一线二线三线| 婷婷综合另类小说色区| 欧美在线观看视频一区二区三区| 欧美激情在线观看视频免费| 国产美女一区二区| 欧美精品一区二| 久草在线在线精品观看| 3751色影院一区二区三区| 五月天网站亚洲| 精品日韩一区二区三区免费视频| 午夜精品久久久久久久99樱桃| 精品视频999| 久久不见久久见免费视频7| 日韩欧美一区电影|