[gsharp-devel] redraw buglets

Robert Strandh strandh at labri.fr
Mon Jul 19 16:47:03 UTC 2004


Christophe Rhodes writes:
 > Christophe Rhodes <csr21 at cam.ac.uk> writes:
 > 
 > > Can you give me instructions on what you're doing to trigger the
 > > redraw?  Alternatively, you may wish to try this running under the
 > > statistical profiler provided by sbcl -- loaded with (require
 > > :sb-sprof).
 > 
 > I've played around with this idea a little, and have some slightly
 > surprising results.  Apparently, at least for sbcl, the bottleneck is
 > bignum gcd.  The top 20 functions (statistically sampled by loading
 > rapsoden-sjunger.gsh into gsharp and then leaning on C-f) are
 > 
 >    1    231   6.2    231   6.2 SB-BIGNUM:BIGNUM-GCD
 >    2    177   4.8    408  11.0 "&MORE processing"
 >    3    164   4.4    572  15.5 SB-BIGNUM::MAKE-GCD-BIGNUM-ODD
 >    4    140   3.8    712  19.3 "#'(LAMBDA (SB-PCL::.PV-CELL. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. ...) (DECLARE #) ...)"
 >    5    129   3.5    841  22.8 SB-BIGNUM::SUBTRACT-BIGNUM-BUFFERS
 >    6    116   3.1    957  25.9 "#'(SB-KERNEL:INSTANCE-LAMBDA (SB-PCL::.ARG0.) (LET NIL # ...))"
 >    7    116   3.1   1073  29.0 SB-KERNEL:TWO-ARG-+
 >    8     99   2.7   1172  31.7 SB-BIGNUM::BIGNUM-BUFFER-ASHIFT-RIGHT
 >    9     91   2.5   1263  34.2 ASH
 >   10     83   2.2   1346  36.4 "#'(SB-KERNEL:INSTANCE-LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1.) (LET NIL # ...))"
 >   11     80   2.2   1426  38.6 SB-BIGNUM::BIGNUM-GCD-ORDER-AND-SUBTRACT
 >   12     77   2.1   1503  40.7 SB-KERNEL:CLASSOID-TYPEP
 >   13     77   2.1   1580  42.7 SB-KERNEL::%%TYPEP
 >   14     63   1.7   1643  44.5 SB-VM::GENERIC-+
 >   15     56   1.5   1699  46.0 SB-BIGNUM::BIGNUM-TRUNCATE-SINGLE-DIGIT
 >   16     54   1.5   1753  47.4 SB-KERNEL::INTEGER-/-INTEGER
 >   17     53   1.4   1806  48.9 SB-BIGNUM::%NORMALIZE-BIGNUM-BUFFER
 >   18     53   1.4   1859  50.3 "hairy arg processor for top level local call SB!BIGNUM::BIGNUM-ASHIFT-LEFT-UNALIGNED"
 >   19     52   1.4   1911  51.7 GETHASH
 >   20     51   1.4   1962  53.1 TRUNCATE
 > 
 > Unfortunately, this isn't yielding information about why it's spending
 > so much time in GCD, though my suspicion would land on integer or
 > ratio division.

I suspect you are right.  I use fractions alot, and the GCD would be
called not only for division, but also for additions, multiplications,
etc. 

 > [ No, I don't know what "&MORE processing" is doing quite so high: it
 >   seems to be connected to certain methods, particuarly
 >   MAP-OVER-OUTPUT-RECORDS-CONTAINING-POSITION ]

I am willing to believe that.  

-- 
Robert Strandh

---------------------------------------------------------------------
Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.
---------------------------------------------------------------------




More information about the gsharp-devel mailing list