Performance
A simple performance study was carried out against the
university example. The hardware was
a laptop with an Intel P4, 3 GHz CPU and 1G RAM. Java was run with a value
of 1G for both initial and max memory sizes.
The elements in the example are composed of these values, which may be
simple (int or string), composite (building or name), or involve functions
(add, concat):
-
buildings: pk=int, name=string
-
names: pk=int, first=string, last=string
-
rooms: pk=int, room_name=(add, counter, 2 ints), building=building
-
teachers: pk=int, name=name, location=room,
office_hours=(concat, counter, 3 strings)
-
students: pk=int, name=name
-
classes: pk=int, name=(concat string, int), book=(concat
string, int), room=room, teacher=teacher, students=N students,
-
class-students: classPk=int, student=student
-
semesters: pk=int, season=string, year=date, classes=N classes
-
semester-classes: semesterPk=int, class=class
Several configurations were run and timed to completion. Each configuration
had a value for number of semesters, classes per semester, and students per
class. These configurations are presented as (A/B/C) where A=semesters,
B=classes, and C = students. It is noteworthy that there was a significant
amount of paging in all cases.
-
10/100/100: time = 45 seconds. This generated a total of 1000
classes and 100000 students. 205105 xml elements and 302065 csv rows were
generated.
-
10/100/1000: time = 3 minutes, 51 seconds. This generated a
total of 1000 classes and 1000000 students. 78871572 xml elements and
45334442 csv rows were generated.
-
10/1000/100: time = 4 minutes, 12 seconds. This configuration is
roughly equivalent to the previous one
-
10/1000/1000 1/10000/1000: These larger datasets were
stopped after 10 minutes, before they completed. Generalizing the above
results, they should have taken roughly 45 minutes.
While the university example represents a relatively simple model with 9
elements, it is perhaps large enough to make reasonable generalizations to
larger models.