gcl-devel
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]