[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: address@hidden: Re: [Gcl-devel] Re: Profiling [ was Re: lisp reader
From: |
Matt Kaufmann |
Subject: |
Re: address@hidden: Re: [Gcl-devel] Re: Profiling [ was Re: lisp reader enhancement ]] |
Date: |
Mon, 11 Aug 2003 21:49:04 -0500 |
Camm --
Do I need to rebuild all existing .o files that are loaded as (a preliminary)
part of the test, before I run the test after rebuilding GCL and then ACL2?
-- Matt
cc: address@hidden
From: "Camm Maguire" <address@hidden>
Date: 11 Aug 2003 21:38:04 -0400
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
X-WSS-ID: 13269B74500212-01-01
Content-Type: text/plain;
charset=us-ascii
Greetings!
OK, I suppose you may know of something that needed changing in your
environment, but I retraced your steps, and there is a problem with
our count of the symbols in the bfd symbol table. I think you will
need this patch, now committed into 2.5.4:
=============================================================================
Index: fat_string.c
===================================================================
RCS file: /cvsroot/gcl/gcl/o/fat_string.c,v
retrieving revision 1.14.4.1
diff -u -r1.14.4.1 fat_string.c
--- fat_string.c 4 Aug 2003 23:38:51 -0000 1.14.4.1
+++ fat_string.c 12 Aug 2003 01:30:57 -0000
@@ -222,6 +222,8 @@
#if defined(HAVE_LIBBFD) && ! defined(SPECIAL_RSYM)
+static int bfd_update;
+
static MY_BFD_BOOLEAN
bfd_combined_table_update(struct bfd_link_hash_entry *h,PTR ct) {
@@ -236,9 +238,14 @@
return MY_BFD_FALSE;
}
-
SYM_ADDRESS(combined_table,combined_table.length)=h->u.def.value+h->u.def.section->vma;
- SYM_STRING(combined_table,combined_table.length)=(char *)h->root.string;
-
+ if (bfd_update) {
+ if (combined_table.length>=combined_table.alloc_length)
+ FEerror("combined table overflow", 0);
+
+
SYM_ADDRESS(combined_table,combined_table.length)=h->u.def.value+h->u.def.section->vma;
+ SYM_STRING(combined_table,combined_table.length)=(char *)h->root.string;
+ }
+
combined_table.length++;
return MY_BFD_TRUE;
@@ -288,12 +295,17 @@
#if defined(HAVE_LIBBFD)
if (link_info.hash) {
- if (combined_table.length+link_info.hash->table.size >=
- combined_table.alloc_length)
-
cfuns_to_combined_table(combined_table.length+link_info.hash->table.size+20);
+ bfd_update=0;
+ bfd_link_hash_traverse(link_info.hash,
+ bfd_combined_table_update,&combined_table);
+
+ if (combined_table.length >=combined_table.alloc_length)
+ cfuns_to_combined_table(combined_table.length);
+ bfd_update=1;
bfd_link_hash_traverse(link_info.hash,
bfd_combined_table_update,&combined_table);
+ bfd_update=0;
}
#endif
=============================================================================
Other than this, you are invoking the profiler commands just right so
far. If you have suggestions for better usability, e.g. _init
address, etc., I'd like to hear them.
Also coming soon -- gprof support. More later.
Take care,
"Matt Kaufmann" <address@hidden> writes:
> Camm --
>
> OOPS -- my apologies! I just noticed that the environment had changed
when I
> ran the test below, and I need to do some recompilation. So never mind
about
> the error, although I'm still interested in whether I called the
> profiling-related functions correctly.
>
> Thanks --
> -- Matt
> From: Matt Kaufmann <address@hidden>
> Subject: Re: [Gcl-devel] Re: Profiling [ was Re: lisp reader enhancement
> To: address@hidden
> CC: address@hidden
> Date: 11 Aug 2003 15:02:46 -0500
>
> Hi, Camm --
>
> After rebuilding ACL2 on GCL,
>
> OK, we've rebuilt GCL, including (I believe) all patches you've sent, and
I've
> built ACL2 on top of it and tried the test again. But I got an error, as
> explained below. Below I'll tell you what I did and then what the error
was.
>
> You said the following:
>
> b) run si::prof with the starting address you desire to
> examine, and a 'scale' parameter indicating how many counter
> profile array elements to allocate to each 256 bytes of code.
> You can see these addresses reported on loading binary
> modules, or you could use the DBEGIN value issued at configure
> time. You could also try function-address. We need to make
> it easier to just say 'profile my whole program', but what I
> did was find the address of _init in gdb, find the value of
> heap_end in gdb, figure out a good scale for this amount of
> memory to correspond to a 1000000 byte array, and issue the
> following call for maxima:
>
> :lisp (si::prof 134522412 15)
>
> I did the following, which seemed to give me _init and heap_end:
>
> [ 202 ] --> gdb gcl-saved_acl2
> GNU gdb 5.3
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
are
> welcome to change it and/or distribute copies of it under certain
conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for
details.
> This GDB was configured as "i686-pc-linux-gnu"...
> (gdb) p _init
> $1 = {<text variable, no debug info>} 0x8049cb0 <_init>
> (gdb) p heap_end
> $2 = 154292224
> (gdb)
>
> I think you're saying that the second argument to si::prof should be
computed
> as shown below:
>
> >(/ (- 154292224 #x8049cb0) 1000000.0)
> ;heap_end ;_init
> 19.77224
>
> So I did this:
>
> (si::set-up-profile 1000000 8000) ; ACL2 has about 4100 defuns and about
600 macros
> (si::prof #x8049cb0 20)
>
> After executing the forms above before starting on the "real" computation,
I
> ran into this problem, which I don't think I've seen before:
>
> %%AND-TREE
> [SGC for 3000 CONS pages..(10580 writable)..(T=19).GC finished]
> [SGC for 3000 CONS pages..(10609 writable)..(T=19).GC finished]
> [SGC for 3000 CONS pages..(10624 writable)..(T=20).GC finished]
> [SGC for 232 FIXNUM pages..(10625 writable)..(T=22).GC finished]
> [SGC for 232 FIXNUM pages..(10626 writable)..(T=22).GC finished]
> [SGC for 232 FIXNUM pages..(10627 writable)..(T=21).GC finished]
> [SGC for 3000 CONS pages..(10632 writable)..(T=21).GC finished]
> [SGC off][GC for 750 RELOCATABLE-BLOCKS pages..(T=66).GC finished]
> [SGC on][SGC off][GC for 750 RELOCATABLE-BLOCKS pages..(T=70).GC
finished]
> [SGC on][SGC off][GC for 750 RELOCATABLE-BLOCKS pages..(T=73).GC
finished]
> [SGC on][SGC for 3043 CONS pages..(7025 writable)..(T=11).GC finished]
> [SGC for 0 RELOCATABLE-BLOCKS pages..(7091 writable)..(T=10).GC finished]
> [SGC for 3043 CONS pages..(7820 writable)..(T=13).GC finished]
>
> Error: Frame stack overflow.
> Fast links are on: do (si::use-fast-links nil) for debugging
> Error signalled by IF.
> Broken at COND. Type :H for Help.
> ACL2>>
>
> Any suggestions?
>
> - -- Matt
> cc: address@hidden, address@hidden
> From: "Camm Maguire" <address@hidden>
> Date: 05 Aug 2003 16:22:12 -0400
> User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
> X-WSS-ID: 132ECD8D9243291-01-01
> Content-Type: text/plain;
> charset=us-ascii
>
> Hi Matt!
>
> "Matt Kaufmann" <address@hidden> writes:
>
> > Hi, Camm --
> >
> > I haven't yet rebuilt GCL since your last patch related to profiling
--
> > actually Rob Sumners has been doing the builds so I'm waiting on him
(and he
> > has a lot on his plate at work, though I imagine he may have time
soon).
> >
>
> OK, please keep me posted. I might accept a small performance hit,
> but not 3x :-).
>
> > But, I wanted to let you know I've discovered a bug in the previous
reader
> > patches that you sent. It's illustrated below (comments added). The
problem
> > goes away if (a . b) is replaced by (a b), so I guess this has to do
with
> > reading dotted pairs.
> >
>
> Here is a fix, just checked in:
>
> ===================================================================
> RCS file: /cvsroot/gcl/gcl/o/read.d,v
> retrieving revision 1.17
> diff -u -r1.17 read.d
> --- read.d 30 Jul 2003 20:26:01 -0000 1.17
> +++ read.d 5 Aug 2003 20:18:10 -0000
> @@ -663,6 +663,9 @@
> c = read_char(in);
> if (char_code(c) != ')')
> FEerror("A dot appeared before a right parenthesis.", 0);
> + else if (PP0>P0) PP0--; /* should be the only
other place
> + outside of
read_object where
> + closing parens are
read */
> goto ENDUP;
> }
> vs_push(x);
>
>
> Take care,
>
> > GCL (GNU Common Lisp) (2.5.3) Mon Jul 21 10:41:19 CDT 2003
> > Licensed under GNU Library General Public License
> > Dedicated to the memory of W. Schelter
> >
> > Use (help) to get some basic information on how to use GCL.
> >
> > >(make-package "ABC" :use nil)
> >
> > #<"ABC" package>
> >
> > >(import '(package-name symbol-package) (find-package "ABC"))
> >
> > T
> >
> > >(package-name (symbol-package 'xxxx))
> >
> > "USER"
> >
> > >*package*
> >
> > #<"USER" package>
> >
> > >'abc::((a . b))
> >
> > ((ABC::A . ABC::B))
> >
> > >(package-name (symbol-package 'xxxx)) ;;; !!! Here is the first
surprise.
> >
> > "ABC"
> >
> > >user::*package* ;;; !!! It's a little surprising that the
*package* is still
> > ;;; right, even though the reader isn't using
that
> > ;;; package.
> >
> > #<"USER" package>
> >
> > >
> >
> > -- Matt
> > Resent-From: address@hidden
> > Resent-To: address@hidden
> > cc: address@hidden
> > From: "Camm Maguire" <address@hidden>
> > Date: 04 Aug 2003 19:21:07 -0400
> > User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
> > X-WSS-ID: 133121B59149313-01-01
> > Content-Type: text/plain;
> > charset=us-ascii
> >
> > Greetings! Just a followup note here in case you're still
interested in
> > trying to analyze the performance.
> >
> > 1) If you reran with the new gbc-time, I'd be interested to know
> > what it was.
> >
> > 2) I've been looking at GCL's two profiling modes. The first is
based
> > on the 'profil' call to libc. It works, but unfortunately our
> > documentation is misleading/wrong. The idea is to:
> >
> > 0) Apply the following two patches:
> >
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/o/fat_string.c,v
> > retrieving revision 1.14
> > diff -u -r1.14 fat_string.c
> > --- fat_string.c 15 Feb 2003 00:38:28 -0000 1.14
> > +++ fat_string.c 4 Aug 2003 22:52:09 -0000
> > @@ -49,7 +49,7 @@
> > if( type_of(start_address)!=t_fixnum ||
type_of(scale)!=t_fixnum)
> > FEerror("Needs start address and scale as args",0);
> >
> > - profil((void *) (ar->ust.ust_self), (ar->ust.ust_dim),
> > + profil(!(fix(start_address)*fix(scale)) ? NULL : (void *)
(ar->ust.ust_self), (ar->ust.ust_dim),
> > fix(start_address),fix(scale) << 8);
> > RETURN1(start_address);
> > }
> > --- ptable.h 12 Jul 2002 22:00:48 -0000 1.4
> > +++ ptable.h 4 Aug 2003 22:51:56 -0000
> > @@ -50,7 +50,7 @@
> > #ifdef SPECIAL_RSYM
> > struct string_address_table c_table;
> > #else
> > -static struct bfd_link_info link_info;
> > +struct bfd_link_info link_info;
> > #endif
> > struct string_address_table combined_table;
> >
> >
> > a) in your program, first run set-up-profile, defined in
> > profile.lsp (should be in your gcl autoload path). The first
> > argument is the size of the profile array, with 1000000 being
> > suggested in the docs -- this works for me. What is not
> > documented is the optional second argument specifying the
> > maximum number of functions in your image. I had to supply
> > this to increase the default value when testing in maxima.
> > Here is my call:
> >
> > :lisp (si::set-up-profile 1000000 8000)
> >
> >
> > Loaded c and other function addresses
> > Using profile-array length 1000000
> > Use (si::prof 0 90) to start and (prof 0 0)
to stop:
> > This starts monitoring at address 0
> > thru byte (256/90)*(length *profile-array*)
> > (si::display-prof) displays the results
> > NIL
> >
> > b) run si::prof with the starting address you desire to
> > examine, and a 'scale' parameter indicating how many counter
> > profile array elements to allocate to each 256 bytes of code.
> > You can see these addresses reported on loading binary
> > modules, or you could use the DBEGIN value issued at
configure
> > time. You could also try function-address. We need to make
> > it easier to just say 'profile my whole program', but what I
> > did was find the address of _init in gdb, find the value of
> > heap_end in gdb, figure out a good scale for this amount of
> > memory to correspond to a 1000000 byte array, and issue the
> > following call for maxima:
> >
> > :lisp (si::prof 134522412 15)
> >
> > c) run some intesive code, I did load("tests.lisp");
> >
> > d) Turn off the profiler
> >
> > :lisp (si::prof 0 0)
> >
> > e) display the results, probably using the same scale and
> > start address as in b):
> >
> > :lisp (si::display-profile 134522412 15)
> >
> > My output follows. There are a few gotchas in interpretation
> > -- If a global function in GCL's core is separated from the
> > next such function by a bunch of static functions, all counts
> > for the static functions get lumped into the first's counter.
> > The large values for 'enter_mark_origin' thus refers to the
> > GBC time in the marker and sweeper located in between in the
> > code. Also needs cleaning up.
> >
> > All user functions are not thus afflicted. But the core
> > function counts are probably illustrative, as they may
indicate
> > inefficiencies in the lisp compiler's optimization/inlining
of
> > calls.
> >
> > I short, I'd appreciate seeing your version of the following:
> >
> > 0.10% ( 1): strerror
> > 0.10% ( 1): memmove
> > 0.39% ( 4): IapplyVector
> > 0.39% ( 4): Iinvoke_c_function_from_value_stack
> > 0.10% ( 1): make_fixnum1
> > 0.10% ( 1): pack_hash
> > 0.19% ( 2): intern
> > 0.10% ( 1): Lintern
> > 0.10% ( 1): Lunuse_package
> > 0.10% ( 1): Lparse_namestring
> > 0.10% ( 1): fLrationalp
> > 0.10% ( 1): fLfunctionp
> > 1.07% ( 11): eql
> > 0.58% ( 6): equal
> > 0.29% ( 3): init_predicate_function
> > 0.10% ( 1): edit_double
> > 0.78% ( 8): write_object
> > 0.68% ( 7): Lwrite_char
> > 0.10% ( 1): princ
> > 0.19% ( 2): init_prog
> > 0.58% ( 6): read_object
> > 0.39% ( 4): NIL
> > 0.19% ( 2): NIL
> > 0.87% ( 9): Lread_char
> > 0.10% ( 1): rl_putc_em
> > 0.48% ( 5): symbol_function
> > 0.10% ( 1): Lelt
> > 1.55% ( 16): elt
> > 0.39% ( 4): elt_set
> > 0.87% ( 9): length
> > 0.19% ( 2): nreverse
> > 0.10% ( 1): fSclear_connection_state
> > 0.19% ( 2): coerce_to_string
> > 0.10% ( 1): get_string_start_end
> > 0.19% ( 2): Lstring_neq
> > 0.10% ( 1): Lmake_string
> > 0.19% ( 2): Lstring_right_trim
> > 0.10% ( 1): structure_ref
> > 0.68% ( 7): symbol_value
> > 1.84% ( 19): getf
> > 0.10% ( 1): get
> > 0.19% ( 2): remf
> > 0.10% ( 1): remprop
> > 0.19% ( 2): Lgetf
> > 0.39% ( 4): check_type_symbol
> > 0.10% ( 1): check_type_string
> > 0.10% ( 1): check_type_cons
> > 0.10% ( 1): Ltype_of
> > 2.62% ( 27): alloc_object
> > 3.30% ( 34): make_cons
> > 0.39% ( 4): alloc_relblock
> > 0.29% ( 3): fLrow_major_aref
> > 0.10% ( 1): fSaset1
> > 0.10% ( 1): fSget_aelttype
> > 0.19% ( 2): gset
> > 0.10% ( 1): array_allocself
> > 0.10% ( 1): fLfill_pointer
> > 0.48% ( 5): setq
> > 0.10% ( 1): fLmakunbound
> > 0.10% ( 1): fSset_gmp_allocate_relocatable
> > 0.19% ( 2): new_bignum
> > 0.10% ( 1): normalize_big_to_object
> > 0.10% ( 1): mul_int_big
> > 0.39% ( 4): normalize_big
> > 0.10% ( 1): big_minus
> > 0.19% ( 2): maybe_replace_big
> > 0.39% ( 4): integer_quotient_remainder_1
> > 0.19% ( 2): parse_key_new_new
> > 0.19% ( 2): Lchar_eq
> > 0.10% ( 1): Lchar_neq
> > 0.10% ( 1): Lchar_upcase
> > 0.10% ( 1): cplus
> > 0.10% ( 1): init_error
> > 1.94% ( 20): funcall
> > 0.19% ( 2): funcall_no_event
> > 0.10% ( 1): super_funcall
> > 0.29% ( 3): super_funcall_no_event
> > 0.10% ( 1): readc_stream
> > 0.10% ( 1): unreadc_stream
> > 0.58% ( 6): writec_stream
> > 0.29% ( 3): flush_stream
> > 0.39% ( 4): read_fasl_data
> > 0.10% ( 1): Lformat
> > 0.29% ( 3): fLformat
> > 0.10% ( 1): frs_sch_catch
> > 0.10% ( 1): call_or_link
> > 0.48% ( 5): c_apply_n
> > 3.39% ( 35): call_proc_new
> > 31.62% ( 326): enter_mark_origin
> > 0.10% ( 1): perm_writable
> > 1.65% ( 17): car
> > 1.65% ( 17): cdr
> > 0.29% ( 3): kar
> > 1.26% ( 13): list
> > 0.19% ( 2): listA
> > 0.10% ( 1): append
> > 0.19% ( 2): copy_list
> > 0.19% ( 2): Lcdr
> > 0.10% ( 1): cddr
> > 0.39% ( 4): Llast
> > 0.39% ( 4): Lmake_list
> > 0.10% ( 1): Lrevappend
> > 0.29% ( 3): nconc
> > 0.10% ( 1): Lreconc
> > 0.10% ( 1): fixnum_add
> > 0.19% ( 2): number_plus
> > 0.19% ( 2): number_minus
> > 0.19% ( 2): get_gcd
> > 0.97% ( 10): number_compare
> > 0.10% ( 1): Lall_the_same
> > 0.10% ( 1): number_expt
> > 0.10% ( 1): GET-INSTREAM
> > 0.29% ( 3): READ-FROM-STRING
> > 0.10% ( 1): TYPEP
> > 0.10% ( 1): SYSTEM::NORMALIZE-TYPE
> > 0.48% ( 5): SYSTEM::KNOWN-TYPE-P
> > 0.29% ( 3): SUBTYPEP
> > 0.10% ( 1): CONCATENATE
> > 0.10% ( 1): SYSTEM::BAD-SEQ-LIMIT
> > 0.10% ( 1): REMOVE
> > 0.10% ( 1): DELETE
> > 0.19% ( 2): POSITION
> > 0.10% ( 1): SORT
> > 0.10% ( 1): WITH-HASH-TABLE-ITERATOR
> > 0.10% ( 1): user_match
> > 0.10% ( 1): ASSQR
> > 0.10% ( 1): SYS-FREE-MEMORY
> > 0.19% ( 2): MGET
> > 0.10% ( 1): MACLISP-TYPEP
> > 0.19% ( 2): BOTHCASE-IMPLODE
> > 0.10% ( 1): LIST-STRING
> > 0.10% ( 1): TYO
> > 0.39% ( 4): TYI
> > 0.10% ( 1): FILE-TO-STRING
> > 0.10% ( 1): ALPHALESSP
> > 0.78% ( 8): MEMQ
> > 0.10% ( 1): DELQ
> > 0.29% ( 3): SAFE-GET
> > 0.19% ( 2): GETL
> > 0.10% ( 1): SUB
> > 0.19% ( 2): ASSOL
> > 0.10% ( 1): ASSOLIKE
> > 0.10% ( 1): MAXIMA-SUBSTITUTE
> > 0.19% ( 2): GETOP
> > 0.19% ( 2): GETOPR
> > 0.10% ( 1): $LISTP
> > 0.10% ( 1): SPANG1
> > 0.10% ( 1): $GETCHAR
> > 0.10% ( 1): MEVALARGS
> > 0.10% ( 1): SAFE-MGETL
> > 1.36% ( 14): MEVAL1
> > 0.10% ( 1): GETL-LM-FCN-PROP
> > 0.10% ( 1): MGETL
> > 0.10% ( 1): $SQRT
> > 0.10% ( 1): $BINOMIAL
> > 0.19% ( 2): ONEP1
> > 0.39% ( 4): ZEROP1
> > 0.19% ( 2): MNUMP
> > 0.10% ( 1): RATNUMP
> > 0.10% ( 1): MEXPTP
> > 0.10% ( 1): $RATNUMP
> > 0.10% ( 1): SPECREPCHECK
> > 0.10% ( 1): CONSTANT
> > 0.10% ( 1): MAXIMA-CONSTANTP
> > 0.10% ( 1): MXORLISTP1
> > 0.10% ( 1): CONSTFUN
> > 0.10% ( 1): FREE
> > 0.58% ( 6): SIMPLIFYA
> > 0.29% ( 3): EQTEST
> > 0.10% ( 1): RULECHK
> > 0.10% ( 1): TIMESK
> > 0.10% ( 1): PLS
> > 0.10% ( 1): TESTT
> > 0.10% ( 1): TESTTNEG
> > 0.19% ( 2): SIMPTIMES
> > 0.10% ( 1): STIMEX
> > 0.10% ( 1): TMS
> > 0.10% ( 1): SIGNUM1
> > 0.19% ( 2): EXPTRL
> > 0.10% ( 1): SIMPEXPT
> > 0.29% ( 3): TIMESIN
> > 0.58% ( 6): ALIKE1
> > 0.10% ( 1): ALIKE
> > 0.10% ( 1): ORDHACK
> > 0.10% ( 1): RATNUMERATOR
> > 0.39% ( 4): NTHKDR
> > 0.10% ( 1): $MKEY
> > 0.10% ( 1): MEVAL*
> > 0.10% ( 1): KILL1
> > 0.10% ( 1): REMALIAS
> > 0.10% ( 1): STRING*
> > 0.10% ( 1): $NOUNIFY
> > 0.10% ( 1): PFLATTEN
> > 0.10% ( 1): PMINUSP
> > 0.10% ( 1): PQUOTIENT
> > 0.19% ( 2): ALGORD
> > 0.10% ( 1): PSIMP
> > 0.10% ( 1): PCETIMES1
> > 0.10% ( 1): PCTIMES
> > 0.10% ( 1): PEXPTSQ
> > 0.58% ( 6): $APROPOS
> > 0.10% ( 1): DIVISORS
> > 0.10% ( 1): COMPLETEVECTOR
> > 0.10% ( 1): CFACTOR
> > 0.19% ( 2): SAVEFACTORS
> > 0.10% ( 1): FACTOROUT1
> > 0.10% ( 1): PFACTOR1
> > 0.10% ( 1): PSQUOREM1
> > 0.10% ( 1): OLDCONTENT1
> > 0.10% ( 1): PCONTENTZ
> > 0.19% ( 2): $RATSIMP
> > 0.10% ( 1): $FACTOR
> > 0.10% ( 1): RATSETUP1
> > 0.10% ( 1): GENSYM-READABLE
> > 0.10% ( 1): ORDERPOINTER
> > 0.10% ( 1): RATREP*
> > 0.10% ( 1): RATF
> > 0.29% ( 3): PREP1
> > 0.10% ( 1): NEWVAR1
> > 0.10% ( 1): PDISREP
> > 0.10% ( 1): PDISREP!
> > 0.10% ( 1): PDISREP2
> > 0.10% ( 1): $RATDISREP
> > 0.10% ( 1): CDISREP
> > 0.10% ( 1): NEWVAR
> > 0.10% ( 1): RADSORT
> > 0.10% ( 1): RDIS*
> > 0.10% ( 1): PRODCOEF
> > 0.19% ( 2): FREEOF
> > 0.10% ( 1): FLGREAT1
> > 0.19% ( 2): STRING1
> > 0.19% ( 2): MSIZE
> > 0.10% ( 1): MSIZE-ATOM
> > 0.10% ( 1): MSZ
> > 0.10% ( 1): MSZ-MEXPT
> > 0.29% ( 3): STRMDOIN
> > 0.10% ( 1): NFORMAT
> > 0.39% ( 4): FORM-MTIMES
> > 0.10% ( 1): IMEMBER
> > 0.10% ( 1): ALPHABETP
> > 0.10% ( 1): ASCII-NUMBERP
> > 0.10% ( 1): TYI-PARSE-INT
> > 0.10% ( 1): ALIASLOOKUP
> > 0.19% ( 2): GOBBLE-WHITESPACE
> > 0.10% ( 1): PARSER-ASSOC
> > 0.19% ( 2): READ-COMMAND-TOKEN-AUX
> > 0.10% ( 1): READLIST
> > 0.19% ( 2): SCAN-DIGITS
> > 0.10% ( 1): COLLISION-CHECK
> > 0.10% ( 1): MREAD
> > 0.29% ( 3): ADD-LINEINFO
> > 0.10% ( 1): TRIGINT
> > 0.10% ( 1): $LISTOFVARS
> > 0.19% ( 2): DIMENSION
> > 0.10% ( 1): MAKESTRING
> > 0.10% ( 1): DIMENSION-SUPERSCRIPT
> > 0.10% ( 1): CHECKFIT
> > 0.19% ( 2): CHECKBREAK
> > 0.19% ( 2): OUTPUT
> > 0.10% ( 1): DRAW-LINEAR
> > 0.10% ( 1): D-SUMSIGN
> > 0.48% ( 5): EXPLODEN
> > 0.10% ( 1): CNTP
> > 0.10% ( 1): LEARN
> > 0.10% ( 1): LIKE
> > 0.10% ( 1): DEQ
> > 0.10% ( 1): TESTA*
> > 0.10% ( 1): E1-
> > 0.10% ( 1): PSTIMES
> > 0.19% ( 2): PSEXPT1
> > 0.10% ( 1): GET-ARRAY-POINTER
> > 0.10% ( 1): SIMPLIM%INVERSE_JACOBI_DS
> > 0.10% ( 1): %$ETEST
> > Total ticks 1031
> > 134522412
> >
> > f) I'd like suggestions on how to improve the usability here.
> >
> > 3) The gprof mode will require a bit more work, as recent gprof in
> > Linux calls monstartup authmatically in gcrt0.o, foiling the
> > existing strategy in the code.
> >
> > Take care,
> >
> >
> >
> > --
> > Camm Maguire
address@hidden
> >
==========================================================================
> > "The earth is but one country, and mankind its citizens." --
Baha'u'llah
> >
> >
> >
> > _______________________________________________
> > Gcl-devel mailing list
> > address@hidden
> > http://mail.gnu.org/mailman/listinfo/gcl-devel
> >
> >
> >
>
> --
> Camm Maguire address@hidden
>
==========================================================================
> "The earth is but one country, and mankind its citizens." --
Baha'u'llah
> ----------
>
>
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah