Log of the #nice channel on irc.freenode.net

Using timezone: Central European Time
<CIA-9>03bonniot * 10Nice/src/mlsub/typing/lowlevel/ (6 files): Optim: do not use Object.clone to clone BitVectors.00:52
<arjanb>what profiler do you use?01:36
<bonniot>i tried different things01:37
now i was using -Xrunhprof with some viewers. HPjmeter and PerfAnal
HPjmeter is more advanced, but it seems to me that it gives wrong information sometimes...
<arjanb>it's strange Object.clone() behaves that badly01:41
<bonniot>yeah. do you see a big difference?
<arjanb>10% off01:43
<bonniot>wow01:44
<arjanb>g'night02:39
* arjanb leaves
* bonniot leaves03:32
* ChanServ leaves09:03
* CIA-9 leaves
* CIA-9 joins
* ChanServ joins09:10
* bonniot joins09:22
<CIA-9>03bonniot * 10Nice/ (3 files in 3 dirs): Removed the obsolete nice.lang.Type10:02
* arjanb joins12:33
<bonniot>i'm going to print more fully qualified names in package.nicei, as it's quite expensive to rediscover what package a name belongs to13:02
on a swing app, it saves about 8%13:03
globally, dev version is going to be more than 20% faster than 0.9.10 on that app13:04
<arjanb>sounds good
<bonniot>and there are still some names that are not fully qualified
<arjanb>are qualified names possible everywhere?13:05
<bonniot>should be
for types
later we can even save overloading resolution time by fully qualifying methods13:06
although ideally there should be no overloading resolution in compiled packages
currently there can be for default parameter values
<arjanb>maybe default values can be stored in special functions in the compiled package13:09
<bonniot>how?13:10
<arjanb>void foo(int x = someexpression) {} becomes void foo(int x = foo$default$x()) {} or something13:12
<bonniot>someexpression can refer to previous arguments13:14
<arjanb>then the default function get the previous arguments as arguments13:15
<bonniot>that's possible13:16
i wonder if the jit would be clever enough to avoid any runtime cost for this
another solution is to store a representation of bytecode in an attribute, and copy it when calling the method13:17
<arjanb>inlining of static method is easy for a jit13:18
<bonniot>yeah13:19
<CIA-9>03bonniot * 10Nice/src/bossa/syntax/ (methodDeclaration.nice formalParameters.nice): 13:43
Use fully qualified type names for parameters in compiled package interfaces
to avoid wasting time searching the qualified name when loading the package.
03bonniot * 10Nice/ (2 files in 2 dirs): Do not load non-public fields from java* packages.14:42
<arjanb>fillinstacktrace is still taking 10%15:16
<bonniot>how does that break down by caller?15:20
<arjanb>i have no idea
<bonniot>what tool are you using?15:22
<arjanb>just -Xprof
<bonniot>you can see that with using hprof then viewing the data with perfanal
with a sufficient stack depth in hprof15:23
did you try it?16:26
<arjanb>yeah16:27
<bonniot>and?16:38
<arjanb>it takes some time to get used to the PerfAnal viewer16:41
<bonniot>indeed
the "Goto this method" popup is essential to browse16:42
<arjanb>quite some time is spent in cloning and creating exceptions
<bonniot>i see 2% in Object.clone and 6 in fillInStackTrace
you?16:44
<arjanb>i mean on higher level, like BitMatrix.clone and creating typing exceptions and it depends on what you profile16:45
<bonniot>for exceptions, isn't 95% of the time in fillInStackTrace?16:47
typing exceptions: 2.4% all combined16:48
BitMatrix.clone: 4.8%
what testcase are you looking at?16:49
<arjanb>compiling bossa.syntax16:50
<bonniot>good one too ;-)
<arjanb>*away for some time16:51
<bonniot>btw, i think we should bump up the starting memory. 8m is a bit shy ;-)
should make some difference with bossy.syntax16:52
i wonder how gc interact with the profiler, but I guess gc times are just not counted anywhere
i'll be away too
<arjanb>even an empty package benefits from 32m starting memory18:06
<CIA-9>03arjanb * 10Nice/src/mlsub/typing/lowlevel/BitVector.java: Optimized constructor of BitVector.20:03
<arjanb>why do you use copyTo() instead of copyconstructor?22:06
<bonniot>didn't think about it. does it matter?22:42
<arjanb>a little22:45
btw using -Xint with -Xrunhprof gives more consistent results22:49
i'm replacing BitMatrix.clone() atm22:53
<bonniot>ok22:54
<CIA-9>03bonniot * 10tester/gcj.test: Only run gcj once, with JDK 1.423:03
03arjanb * 10Nice/src/mlsub/typing/lowlevel/ (BitMatrix.java K0.java): Use copy-constructor instead of clone for BitMatrix.23:24
<bonniot>what speedups are you getting?23:25
<arjanb>only 1%23:26
<bonniot>doesn't hurt ;-)
<arjanb>yeah but guessing how much some change will improve is hard23:28
<bonniot>profiling before help, but yes it's sometimes still a surprise23:29
how does -Xint help?
<arjanb>that's without jit so no methods are inlined and you get twice as much ticks23:31
what depth do you use?23:37
<bonniot>usually i want all the information, so I set something large, like 9923:40
<arjanb>i use 12 because otherwise most information is very general23:42
<bonniot>wdym?23:49
<arjanb>seeing mostly high level methods23:51
<bonniot>ok, but you can enter browse inside them to find where they spend time23:54

Generated by Sualtam