db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jack Klebanoff <kleba...@Mutagen.Net>
Subject Re: Speeding up unit tests that need a clean database?
Date Fri, 01 Oct 2004 01:14:19 GMT
Nyenyec N wrote:

>I have several JUnit tests that I run as part of the builds and also
>from inside the Eclipse IDE.
>So far my app uses SQL Server and HSQLDB. In both cases I found a way
>to quickly create a clean database (with no tables) use it and discard
>it after each test.
>In SQL Server I use the CREATE/DROP DATABASE call, in HSQLDB I simply
>use an in-memory instance. Creating and discarding a database takes
>about 2 secs in SQL Server and 1 sec in HSQLDB.
>In Derby however, connecting to a URL like this
>takes about 20 secs on the same machine (P4, 1Gb mem).
>Is there a way to do this quicker or approximate the behavior
>described above in some other way?
Before a JVM can use Derby it must load th Derby classes. A fairly large 
number of classes are involved in creating a database, so loading them 
takes an appreciable amount of time. This is unavoidable the first time 
that you create a database in the JVM. The second time that you create a 
database the classes will probably still be loaded, so the second 
database creation should be faster.

You want to group tests together to economize on class loading and 
database creation overhead. Of course, if you go overboard on this it is 
hard to diagnose problems and to maintain the tests.

Jack Klebanoff

View raw message