Opened 9 years ago

Closed 8 years ago

#68 closed defect (wontfix)

Performance of Java 6 is not too good

Reported by: Yoda_Java6 Owned by:
Priority: major Milestone: Next
Component: general Version: 1.6.0-b19 Beta 2
Severity: medium Keywords:


Java 6 still feels a quite a bit slow (in some areas).
To demonstrate it, I used Jeti/2, measuring time from starting it
and until GUI is up and roster and 4 MUCs (2 on local server 2 on
remote) are populated.

All tests done from same client PC, only the loaded Java
versions are different.

Jabber server Java 6 on eCS

Time to start Jeti/2 until roster and 4 MUC are filled

Java 1.41 | Java 1.42 | Java 1.50 | Java 1.60 |

| | | |

9 secs | 20 secs | 45 secs | 35 secs |
9 secs | 15 secs | 35 secs | 25 secs |
9 secs | 25 secs | 38 secs | 33 secs |
9 secs | 16 secs | 30 secs | 24 secs |

| | | |

1) 2) 3) 4)

(A lot more tests was actually done - these are the best results)

1) Java 1.41 loads in 9 secs in almost every test done.

2) Between 15-25 secs in mosts test. Not easy to see any specific

slow part.

3) Has seems to have some timing issues with sockets / DNS - hang

for a long time in same place.

4) Lots of tests were over 1 minut to load. Splash screen is

visible slowly drawn in parts. Communication with server seems
to take a long time.

There seems to be room for improvement - although it may be hard
to compete with our native 1.41

Change History (6)

comment:1 Changed 9 years ago by dmik

Milestone: GAEnhanced

According to the ticket author, 1.41 is the Java made by Golden Code (which doesn't use Odin). And the rest are Odin-based. So, it looks like in this particular area the thing that slows it down is Odin. This is kind of expected.

We will pay more attention to the speed optimization at some later time.

comment:2 Changed 9 years ago by Yoda_Java6

I was told, I might have been making an unfair comparison, because my PC's are all
SMP (2 cores or 2 CPUs). Because of current SMP problems, Java 6 is marked as single
processor app in the tests.
I think this is very fair, as this reflects the current state of all Javas.

However, I changed system to only run 1 core, just to give 'fair results' :-)
(this looks fine in mono fonts :-) )

Java 1.41 | Java 1.42 | Java 1.50 | Java 1.60 |
13-15 secs | 23-25 secs | 43-45 secs | 42-44 secs |

These are the best results after approx 10 tests of each java

Since java 5 is a hack - it is only here for fun.

facts seems to be:

Java 1.41 is 3 times faster than Java 6
Java 1.42 is 2 times faster than Java 6

... in single processor mode. That is IMHO a _LOT_ !

comment:3 Changed 9 years ago by dmik

Thank you for doing these tests.

Java 1.5.0 is a hack not more than 1.4.2 -- both are pure Win32 binaries that use the very same Innotek runtime. So what your results show is that Java 1.5 itself is slower than Java 1.4.2 in at least this exact case you are testing. And since both Java 1.5 and 1.6 behave equally (while the former being bound to InnotekRT and the latter -- to Odin), I suppose it's not Odin who slows them down. Most lileky, they changed something inside Java within JDK 5.0 which gives different performance results (there were actually quite a lot of language and API changes AFAIR).

While it's theoretically possible that Odin can be optimized to work better with the new Java code, it looks like a big task and I see no real demand in it right now. This is just a startup test after all, not very important. We need more tests in various areas and modes. I doubt that the average difference (on a large number of applications and tasks running on various hardware) is that big, actually.

comment:4 Changed 9 years ago by Silvan Scherrer

Milestone: EnhancedGA2
Severity: medium

comment:5 Changed 8 years ago by Silvan Scherrer

Milestone: GA2Next

comment:6 Changed 8 years ago by Silvan Scherrer

Resolution: wontfix
Status: newclosed

i'm closing this ticket, as i don't see a real need to work on that. the reason ist, what most likely the slowness comes from java itself. even on windows newer java is much slower on loading.

Note: See TracTickets for help on using tickets.