|
A critical issue in using a tool as part of the development process is its performance. To ensure that iQgen
is usable in even the largest projects, we invest a lot of effort in making sure that it runs fast and scales
well.
As part of this process, we regularly measure iQgen's performance with each new build. The numbers presented here are
based on the following, synthetic model:

Using iQgen, we copy this model several times (100x, 200x, 500x, 600x) to create a larger, more realistic model
to run our performance and scalability tests. In the diagrams below, the size of the model can be deduced from the
parameter model iterations which specifies how many times the initial model was copied. Here are the resulting metrics for
the current iQgen release:
| Model Iterations |
#Classes |
#Attributes |
#Relations |
#Specialisations |
#Interfaces |
| 100 |
400 |
4000 |
300 |
300 |
200 |
| 200 |
800 |
8000 |
600 |
600 |
400 |
| 500 |
2000 |
20000 |
1500 |
1500 |
1000 |
| 600 |
2400 |
24000 |
1800 |
1800 |
1200 |
Here is the result of using iQgen to create a simple implementation for this model. For each class and
interface, a Java source file is generated. Each class also contains the attributes and implementations
of the relationships. The test environment was an IBM ThinkPad A20p, Pentium III 750MHz, 384 MB RAM, using
JDK 1.3.0-C and Ant 1.4.1 to run iQgen 0.7.7. The results are as follows:
| Classes |
Parse [sec] |
Generate [sec] |
| 100 |
10 |
8 |
| 200 |
18 |
22 |
| 500 |
43 |
51 |
| 600 |
50 |
65 |
Rendered graphically:

|