| gweMysql Driver vs Connector/J
3.0.1 Beta 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?useUnicode=true"; 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]).newInstance(); for(int i = 0; i < 1000; i++) test(); } catch( Exception e ) { e.printStackTrace(); } } } |
| Environment | |
| Profiler | Borland Optimizeit Profiler |
| Profiling Option | No Garbage Collection mode |
| Java VM | Java HotSpot(TM) Client VM (build 1.3.1_04-b02, mixed mode) |
| OS | Windows2000 SP2 |
| CPU | PentiumIII 700MHz |
| Memory | 256MB |
| RDBMS | MySQL-Max 3.23.51 |
| Table definition & data | create table foo(col1 INTEGER PRIMARY KEY,
col2 VARCHAR(128) NOT NULL); INSERT INTO foo values(1, 'ken'); |
| gwe.sql.MysqlDriver 2002/09/23 |
| Class name | Instance count | Difference | Size | Size difference |
|---|---|---|---|---|
| char[] | + 61074 | 4211 K | + 4211 K | |
| byte[] | + 58973 | 129239 K | + 129239 K | |
| java.lang.String | + 42072 | 1479 K | + 1479 K | |
| Object[] | + 17009 | 731 K | + 731 K | |
| java.util.Hashtable$Entry | + 15000 | 527 K | + 527 K | |
| java.lang.StringBuffer | + 10010 | 273 K | + 273 K | |
| java.lang.Integer | + 7999 | 156 K | + 156 K | |
| gwe.sql.gweMysqlStringBuffer | + 6995 | 191 K | + 191 K | |
| java.util.Hashtable | + 4999 | 253 K | + 253 K | |
| java.lang.ref.Finalizer | + 3001 | 105 K | + 105 K | |
| java.lang.ref.SoftReference | + 2999 | 105 K | + 105 K | |
| sun.io.CharToByteMS932 | + 2001 | 117 K | + 117 K | |
| sun.io.CharToByteJIS0201 | + 2001 | 117 K | + 117 K | |
| gwe.sql.gweMysqlColumn | + 2000 | 85 K | + 85 K | |
| java.util.ArrayList | + 2000 | 54 K | + 54 K | |
| java.util.Properties | + 1999 | 101 K | + 101 K | |
| java.util.Hashtable$Enumerator | + 1998 | 101 K | + 101 K | |
| int[] | + 1008 | 85 K | + 85 K | |
| java.io.FileDescriptor | + 1001 | 19 K | + 19 K | |
| sun.io.ByteToCharMS932 | + 1000 | 66 K | + 66 K | |
| java.lang.Object | + 1000 | 19 K | + 19 K | |
| gwe.sql.gweMysql | + 1000 | 105 K | + 105 K | |
| java.io.DataOutputStream | + 1000 | 27 K | + 27 K | |
| gwe.sql.gweMysqlPacket | + 1000 | 66 K | + 66 K | |
| gwe.sql.gweMysqlMetaResult | + 1000 | 27 K | + 27 K | |
| gwe.sql.gweMysqlResultSetCore | + 1000 | 58 K | + 58 K | |
| java.net.Socket | + 1000 | 19 K | + 19 K | |
| java.net.SocketOutputStream | + 1000 | 27 K | + 27 K | |
| java.io.DataInputStream | + 1000 | 27 K | + 27 K | |
| java.net.PlainSocketImpl | + 1000 | 58 K | + 58 K | |
| sun.io.ByteToCharJIS0201 | + 1000 | 42 K | + 42 K | |
| java.net.SocketInputStream | + 1000 | 35 K | + 35 K | |
| gwe.sql.gweMysqlConnection | + 1000 | 66 K | + 66 K | |
| gwe.sql.gweMysqlResultSetBuffer | + 1000 | 58 K | + 58 K | |
| gwe.sql.gweMysqlStatement | + 1000 | 58 K | + 58 K | |
| java.net.Socket$1 | + 999 | 19 K | + 19 K | |
| sun.security.action.GetPropertyAction | + 999 | 27 K | + 27 K | |
| java.net.Socket$2 | + 999 | 19 K | + 19 K | |
| java.lang.Class | + 37 | 5772 b | + 5772 b | |
| java.util.HashMap$Entry | + 6 | 216 b | + 216 b | |
| java.lang.ClassNotFoundException | + 5 | 140 b | + 140 b | |
| java.security.CodeSource | + 4 | 112 b | + 112 b | |
| java.net.URL | + 4 | 272 b | + 272 b | |
| java.net.URLClassLoader$1 | + 4 | 112 b | + 112 b | |
| java.util.Vector | + 3 | 108 b | + 108 b | |
| java.security.ProtectionDomain | + 2 | 56 b | + 56 b | |
| java.lang.Thread | + 2 | 152 b | + 152 b | |
| sun.security.provider.PolicyPermissions | + 2 | 88 b | + 88 b | |
| sun.misc.URLClassPath$4 | + 2 | 72 b | + 72 b | |
| gwe.sql.gweMysqlDriver | + 2 | 40 b | + 40 b | |
| java.sql.DriverInfo | + 2 | 56 b | + 56 b | |
| java.lang.RuntimePermission | + 2 | 56 b | + 56 b | |
| java.io.FilePermission | + 2 | 88 b | + 88 b | |
| java.util.zip.ZipEntry | + 2 | 168 b | + 168 b | |
| java.util.zip.ZipFile$1 | + 2 | 120 b | + 120 b | |
| java.security.PrivilegedActionException | + 2 | 56 b | + 56 b | |
| java.lang.ThreadLocal | + 2 | 40 b | + 40 b | |
| sun.net.www.ParseUtil | + 2 | 40 b | + 40 b | |
| java.io.File | + 2 | 56 b | + 56 b | |
| java.util.jar.JarFile$JarFileEntry | + 2 | 184 b | + 184 b | |
| java.util.zip.ZipFile$ZipFileInputStream | + 2 | 88 b | + 88 b | |
| java.lang.ThreadLocal$SecureKey | + 2 | 40 b | + 40 b | |
| java.util.HashMap | + 1 | 60 b | + 60 b | |
| java.net.InetAddress$CacheEntry | + 1 | 36 b | + 36 b | |
| java.sql.SQLPermission | + 1 | 28 b | + 28 b | |
| java.io.FileInputStream | + 1 | 20 b | + 20 b | |
| java.security.AccessControlContext | + 1 | 36 b | + 36 b | |
| java.lang.Package | + 1 | 52 b | + 52 b | |
| java.net.InetAddress | + 1 | 28 b | + 28 b |
| Connector/J 3.0.1 Beta |
| Class name | Instance count | Difference | Size | Size difference |
|---|---|---|---|---|
| char[] | + 708584 | 20572 K | + 20572 K | |
| Object[] | + 355063 | 14525 K | + 14525 K | |
| java.lang.String | + 263460 | 9262 K | + 9262 K | |
| byte[] | + 258094 | 55689 K | + 55689 K | |
| sun.io.ByteToCharMS932 | + 218000 | 14476 K | + 14476 K | |
| sun.io.ByteToCharJIS0201 | + 218000 | 9367 K | + 9367 K | |
| java.util.Hashtable$Entry | + 114008 | 4008 K | + 4008 K | |
| int[] | + 111038 | 3096 K | + 3096 K | |
| java.lang.StringBuffer | + 12106 | 331 K | + 331 K | |
| com.mysql.jdbc.Buffer | + 12000 | 515 K | + 515 K | |
| java.util.HashMap$Entry | + 8148 | 286 K | + 286 K | |
| sun.io.CharToByteMS932 | + 4013 | 235 K | + 235 K | |
| sun.io.CharToByteJIS0201 | + 4013 | 235 K | + 235 K | |
| java.lang.ref.Finalizer | + 4001 | 140 K | + 140 K | |
| com.mysql.jdbc.Field | + 4000 | 296 K | + 296 K | |
| com.mysql.jdbc.ResultSet | + 3000 | 339 K | + 339 K | |
| java.util.ArrayList | + 3000 | 82 K | + 82 K | |
| java.util.StringTokenizer | + 2997 | 152 K | + 152 K | |
| java.util.HashMap | + 2006 | 117 K | + 117 K | |
| java.lang.Integer | + 2005 | 39 K | + 39 K | |
| com.mysql.jdbc.EscapeProcessor | + 2000 | 39 K | + 39 K | |
| long[] | + 2000 | 70 K | + 70 K | |
| com.mysql.jdbc.RowDataStatic | + 2000 | 54 K | + 54 K | |
| com.mysql.jdbc.Statement | + 2000 | 179 K | + 179 K | |
| java.lang.Object | + 2000 | 39 K | + 39 K | |
| java.util.Properties | + 2000 | 101 K | + 101 K | |
| java.io.FileDescriptor | + 1001 | 19 K | + 19 K | |
| java.util.Hashtable | + 1001 | 50 K | + 50 K | |
| sun.security.action.GetPropertyAction | + 1000 | 27 K | + 27 K | |
| java.net.Socket$2 | + 1000 | 19 K | + 19 K | |
| java.net.PlainSocketImpl | + 1000 | 58 K | + 58 K | |
| java.io.BufferedInputStream | + 1000 | 42 K | + 42 K | |
| java.lang.Boolean | + 1000 | 19 K | + 19 K | |
| com.mysql.jdbc.MysqlIO | + 1000 | 128 K | + 128 K | |
| java.io.BufferedOutputStream | + 1000 | 27 K | + 27 K | |
| java.net.SocketInputStream | + 1000 | 35 K | + 35 K | |
| com.mysql.jdbc.StandardSocketFactory | + 1000 | 27 K | + 27 K | |
| java.net.Socket$1 | + 1000 | 19 K | + 19 K | |
| java.net.Socket | + 1000 | 19 K | + 19 K | |
| java.net.SocketOutputStream | + 1000 | 27 K | + 27 K | |
| com.mysql.jdbc.Connection | + 1000 | 191 K | + 191 K | |
| java.lang.Class | + 70 | 10 K | + 10 K | |
| java.lang.ClassNotFoundException | + 25 | 700 b | + 700 b | |
| java.net.URL | + 24 | 1632 b | + 1632 b | |
| java.net.URLClassLoader$1 | + 24 | 672 b | + 672 b | |
| com.mysql.jdbc.SingleByteCharsetConverter | + 17 | 340 b | + 340 b | |
| java.security.CodeSource | + 14 | 392 b | + 392 b | |
| java.util.jar.JarFile$JarFileEntry | + 12 | 1104 b | + 1104 b | |
| sun.net.www.ParseUtil | + 12 | 240 b | + 240 b | |
| java.util.zip.ZipEntry | + 12 | 1008 b | + 1008 b | |
| java.util.zip.ZipFile$1 | + 12 | 720 b | + 720 b | |
| java.io.File | + 12 | 336 b | + 336 b | |
| java.security.PrivilegedActionException | + 12 | 336 b | + 336 b | |
| sun.misc.URLClassPath$4 | + 12 | 432 b | + 432 b | |
| java.util.zip.ZipFile$ZipFileInputStream | + 12 | 528 b | + 528 b | |
| java.util.Vector | + 3 | 108 b | + 108 b | |
| java.lang.Thread | + 2 | 152 b | + 152 b | |
| java.io.FilePermission | + 2 | 88 b | + 88 b | |
| java.lang.RuntimePermission | + 2 | 56 b | + 56 b | |
| sun.security.provider.PolicyPermissions | + 2 | 88 b | + 88 b | |
| java.security.ProtectionDomain | + 2 | 56 b | + 56 b | |
| java.lang.ThreadLocal | + 2 | 40 b | + 40 b | |
| java.util.HashMap$1 | + 2 | 40 b | + 40 b | |
| java.lang.ref.SoftReference | + 2 | 72 b | + 72 b | |
| java.lang.ThreadLocal$SecureKey | + 2 | 40 b | + 40 b | |
| java.net.InetAddress$CacheEntry | + 1 | 36 b | + 36 b | |
| java.sql.SQLPermission | + 1 | 28 b | + 28 b | |
| java.io.FileInputStream | + 1 | 20 b | + 20 b | |
| java.net.InetAddress | + 1 | 28 b | + 28 b | |
| sun.security.action.GetIntegerAction | + 1 | 28 b | + 28 b | |
| sun.io.CharToByteISO8859_1 | + 1 | 44 b | + 44 b | |
| java.sql.DriverInfo | + 1 | 28 b | + 28 b | |
| java.security.AccessControlContext | + 1 | 36 b | + 36 b | |
| sun.io.ByteToCharCp437 | + 1 | 44 b | + 44 b | |
| java.lang.Package | + 1 | 52 b | + 52 b | |
| com.mysql.jdbc.Driver | + 1 | 20 b | + 20 b |