| gweMysql Driver vs MM.MYSQL Driver Profiling Simple Test Case |
| Target test case - testSelect.java |
| import java.net.URL; import java.sql.*; public class testSelect { public static void test() { try { String url = "jdbc:mysql://localhost:3306/test?characterEncoding=Shift_JIS"; Connection con = DriverManager.getConnection(url, "root", "XXXX"); Statement stmt = con.createStatement(); String query = "select * from foo"; ResultSet rs = stmt.executeQuery(query); while( rs.next() ) { int intval = rs.getInt("col1"); String strval = rs.getString("col2"); } rs.close(); stmt.close(); con.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) { try { Class.forName(args[0]); for(int i = 0; i < 1000; i++) test(); } catch( Exception e ) { e.printStackTrace(); } } } |
| Environment | |
| Profiler | Borland Optimizeit Profiler |
| Java VM | Java HotSpot(TM) Client VM (build 1.3.1_03-b03, mixed mode) |
| OS | Windows2000 SP2 |
| CPU | PentiumIII 700MHz |
| Memory | 256MB |
| RDBMS | MySQL-Max 3.23.49a |
| Table definition & data | create table foo(col1 INTEGER PRIMARY KEY,
col2 VARCHAR(128) NOT NULL); INSERT INTO foo values(1, ''); |
| gwe.sql.MysqlDriver 2002/05/26 |
| Class name | Instance count | Difference | Size | Size difference |
|---|---|---|---|---|
| int[] | + 445 | 79 K | + 79 K | |
| char[] | + 401 | 27 K | + 27 K | |
| byte[] | + 346 | 656 K | + 656 K | |
| java.lang.String | + 296 | 11 K | + 11 K | |
| Object[] | + 145 | 10 K | + 10 K | |
| java.util.Hashtable$Entry | + 79 | 3160 b | + 3160 b | |
| java.lang.StringBuffer | + 51 | 2040 b | + 2040 b | |
| short[] | + 41 | 3520 b | + 3520 b | |
| java.lang.Integer | + 39 | 1248 b | + 1248 b | |
| java.lang.Class | + 37 | 1480 b | + 1480 b | |
| gwe.sql.gweMysqlStringBuffer | + 35 | 1120 b | + 1120 b | |
| java.lang.ref.Finalizer | + 30 | 1440 b | + 1440 b | |
| java.util.Hashtable | + 25 | 1400 b | + 1400 b | |
| java.lang.ref.SoftReference | + 21 | 1008 b | + 1008 b | |
| java.util.ArrayList | + 10 | 400 b | + 400 b | |
| java.io.FileDescriptor | + 10 | 320 b | + 320 b | |
| java.net.SocketOutputStream | + 10 | 400 b | + 400 b | |
| java.net.PlainSocketImpl | + 10 | 720 b | + 720 b | |
| java.util.Properties | + 10 | 640 b | + 640 b | |
| gwe.sql.gweMysqlColumn | + 10 | 480 b | + 480 b | |
| sun.io.CharToByteMS932 | + 10 | 640 b | + 640 b | |
| sun.io.CharToByteJIS0201 | + 10 | 720 b | + 720 b | |
| java.net.SocketInputStream | + 10 | 400 b | + 400 b | |
| java.lang.Object | + 10 | 240 b | + 240 b | |
| java.util.Hashtable$Enumerator | + 9 | 504 b | + 504 b | |
| sun.io.ByteToCharMS932 | + 9 | 720 b | + 720 b | |
| sun.io.ByteToCharJIS0201 | + 9 | 432 b | + 432 b | |
| java.util.HashMap$Entry | + 6 | 240 b | + 240 b | |
| gwe.sql.gweMysqlResultSetCore | + 5 | 360 b | + 360 b | |
| gwe.sql.gweMysql | + 5 | 560 b | + 560 b | |
| java.io.DataInputStream | + 5 | 160 b | + 160 b | |
| java.io.DataOutputStream | + 5 | 160 b | + 160 b | |
| gwe.sql.gweMysqlMetaResult | + 5 | 160 b | + 160 b | |
| gwe.sql.gweMysqlResultSetBuffer | + 5 | 200 b | + 200 b | |
| gwe.sql.gweMysqlPacket | + 5 | 360 b | + 360 b | |
| java.net.Socket | + 5 | 160 b | + 160 b | |
| gwe.sql.gweMysqlConnection | + 5 | 400 b | + 400 b | |
| gwe.sql.gweMysqlStatement | + 5 | 320 b | + 320 b | |
| java.net.Socket$1 | + 4 | 128 b | + 128 b | |
| java.net.Socket$2 | + 4 | 128 b | + 128 b | |
| sun.security.action.GetPropertyAction | + 4 | 128 b | + 128 b | |
| java.util.Vector | + 3 | 120 b | + 120 b | |
| java.io.FilePermission | + 2 | 96 b | + 96 b | |
| java.security.ProtectionDomain | + 2 | 64 b | + 64 b | |
| java.lang.Thread | + 2 | 160 b | + 160 b | |
| java.lang.RuntimePermission | + 2 | 80 b | + 80 b | |
| java.lang.ThreadLocal | + 2 | 64 b | + 64 b | |
| java.security.CodeSource | + 2 | 80 b | + 80 b | |
| java.lang.ThreadLocal$SecureKey | + 2 | 64 b | + 64 b | |
| sun.security.provider.PolicyPermissions | + 2 | 96 b | + 96 b | |
| java.security.AccessControlContext | + 2 | 80 b | + 80 b | |
| java.sql.SQLPermission | + 1 | 40 b | + 40 b | |
| java.sql.DriverInfo | + 1 | 40 b | + 40 b | |
| java.net.InetAddress$CacheEntry | + 1 | 40 b | + 40 b | |
| gwe.sql.gweMysqlDriver | + 1 | 24 b | + 24 b | |
| java.lang.Package | + 1 | 56 b | + 56 b | |
| java.net.InetAddress | + 1 | 40 b | + 40 b | |
| java.util.HashMap | + 1 | 64 b | + 64 b |
| org.gjt.mm.mysql.Driver Version 2.0.14 |
| Class name | Instance count | Difference | Size | Size difference |
|---|---|---|---|---|
| char[] | + 4648 | 210 K | + 210 K | |
| java.lang.String | + 2681 | 104 K | + 104 K | |
| Object[] | + 1582 | 88 K | + 88 K | |
| java.util.Hashtable$Entry | + 1273 | 49 K | + 49 K | |
| byte[] | + 1058 | 180 K | + 180 K | |
| sun.io.ByteToCharMS932 | + 964 | 75 K | + 75 K | |
| sun.io.ByteToCharJIS0201 | + 964 | 45 K | + 45 K | |
| int[] | + 867 | 96 K | + 96 K | |
| org.gjt.mm.mysql.Buffer | + 60 | 2880 b | + 2880 b | |
| java.lang.StringBuffer | + 49 | 1960 b | + 1960 b | |
| short[] | + 43 | 4224 b | + 4224 b | |
| java.lang.Class | + 40 | 1600 b | + 1600 b | |
| java.lang.ref.Finalizer | + 40 | 1920 b | + 1920 b | |
| java.util.Hashtable | + 27 | 1512 b | + 1512 b | |
| java.lang.Integer | + 20 | 640 b | + 640 b | |
| org.gjt.mm.mysql.Field | + 16 | 896 b | + 896 b | |
| java.util.Vector | + 11 | 440 b | + 440 b | |
| java.net.PlainSocketImpl | + 10 | 720 b | + 720 b | |
| java.net.SocketInputStream | + 10 | 400 b | + 400 b | |
| java.net.SocketOutputStream | + 10 | 400 b | + 400 b | |
| org.gjt.mm.mysql.jdbc2.Connection | + 10 | 1600 b | + 1600 b | |
| java.lang.Object | + 10 | 240 b | + 240 b | |
| java.io.FileDescriptor | + 10 | 320 b | + 320 b | |
| java.util.StringTokenizer | + 9 | 504 b | + 504 b | |
| org.gjt.mm.mysql.jdbc2.Statement | + 8 | 768 b | + 768 b | |
| long[] | + 8 | 384 b | + 384 b | |
| org.gjt.mm.mysql.EscapeProcessor | + 8 | 192 b | + 192 b | |
| org.gjt.mm.mysql.jdbc2.ResultSet | + 8 | 1280 b | + 1280 b | |
| java.util.Properties | + 8 | 512 b | + 512 b | |
| java.util.HashMap$Entry | + 5 | 200 b | + 200 b | |
| java.io.BufferedOutputStream | + 4 | 160 b | + 160 b | |
| java.net.Socket$2 | + 4 | 128 b | + 128 b | |
| java.io.BufferedInputStream | + 4 | 192 b | + 192 b | |
| java.net.Socket | + 4 | 128 b | + 128 b | |
| org.gjt.mm.mysql.jdbc2.IO | + 4 | 416 b | + 416 b | |
| java.lang.Boolean | + 3 | 96 b | + 96 b | |
| java.net.Socket$1 | + 3 | 96 b | + 96 b | |
| sun.security.action.GetPropertyAction | + 3 | 96 b | + 96 b | |
| java.lang.Package | + 2 | 112 b | + 112 b | |
| java.security.ProtectionDomain | + 2 | 64 b | + 64 b | |
| java.lang.RuntimePermission | + 2 | 80 b | + 80 b | |
| java.security.CodeSource | + 2 | 80 b | + 80 b | |
| java.lang.Thread | + 2 | 160 b | + 160 b | |
| sun.security.provider.PolicyPermissions | + 2 | 96 b | + 96 b | |
| java.security.AccessControlContext | + 2 | 80 b | + 80 b | |
| java.io.FilePermission | + 2 | 96 b | + 96 b | |
| java.net.InetAddress$CacheEntry | + 1 | 40 b | + 40 b | |
| java.net.InetAddress | + 1 | 40 b | + 40 b | |
| java.sql.DriverInfo | + 1 | 40 b | + 40 b | |
| java.sql.SQLPermission | + 1 | 40 b | + 40 b | |
| org.gjt.mm.mysql.Driver | + 1 | 24 b | + 24 b |