benchmark result

Andrew Haley aph@redhat.com
Mon Dec 6 13:57:00 GMT 2004


Mathieu Lacage writes:
 > 
 > On Mon, 2004年12月06日 at 12:15 +0000, Andrew Haley wrote: 
 > > Ouch! Compile with -ffast-math and get some speedup.
 > 
 > I get a 18% wall-clock time improvement with gcc 3.4.3:
 > 
 > [mlacage@chronos treegrowth]$ time -p ./native/MainSimulation --max-
 > iterations=4000 --seed=1
 > real 8.68
 > user 8.44
 > sys 0.05
 > 
 > I get similar results with gcc 4.0.0 which brings the performance of
 > code generated by 4.0.0 on par with 3.4.3 (modulo the measurement noise
 > which seems to be around 0.1s).
OK, good.
 > > > 7.79 3461.00 507.00 ZN4java4util9ArrayList3getEi
 > > > 4.98 3785.00 324.00 Z20_Jv_IsAssignableFromPN4java4lang5ClassES2_
 > > > 4.92 4105.00 320.00 Jv_CheckCast
 > > 
 > > You're doing a lot of access to generic contatiners, so there's a lot
 > > of cast checks.
 > 
 > I use -fno-bounds-check -fno-store-check. Would it be possible to
 > disable more checks for my production builds ?
Not sanely, no.
 > > You're doing a great many interface calls. I don't think gcj's
 > > interface dispatch is particularly slow, so interface dispatch might
 > > be just as significant a drain on runtime on other systems. You might
 > > get better performance by using ArrayList in your code instead of
 > > AbstractList.
 > 
 > I do use ArrayList already. ZN4java4util14AbstractList17ドルhasNextEv and
 > ZN4java4util14AbstractList14ドルnextEv look like the iterator methods
 > hasNext and next.
Yes, I see.
We could improve the performance of these collection classes with
little work. What is required is someone to study the code, do some
profiling, and fix things.
 > > As far as I'm aware the Boehm gc is fine, but we aren't taking
 > > advantage of the opportunity quickly to recycle very short-lived
 > > objects. This is something that we can improve. But to have gc use
 > > only 10% in an application really isn't tragically bad.
 > 
 > Well, this is for really short simulations: the overhead of the gc
 > increases with the length of the simulations because I build a data
 > structure whose size always increases. I have measured a (~2/3)%
 > wall- clock time usage for the GC in similar situations with the
 > sun JDK 1.5.0 and a rather naive profiler I wrote (It should be
 > noted that the results of the 1.5.0 jdk are not as good as the
 > 1.4.3 jdk and they are close to the results of gcc 3.4.3 without
 > -ffast-math).
 > 
 > An interesting optimization which is clearly impossible with the
 > sun JDK would be to mark this huge growing data structure as
 > outside of the scope of the GC. I have no idea whether or not this
 > is even remotely possible with gcj (hint: I am willing to follow
 > any advice which gives ideas on how to do this, even those
 > including hacking gcj itself).
Chapter 5 of the Real-Time Specification for Java describes the class
ImmortalMemory, which has methods such as newArray(Class, number) and
newInstance(Class). We could implement that simply by switching the
memory allocator. I don't know if the gc would continue to function.
Hans?
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /