[gclist] Ooops, sent the wrong profile result

Ji-Yong D. Chung virtualcyber@erols.com
Sat, 17 Mar 2001 00:36:38 -0500


    HI,

    Sorry about this -- I included wrong profile result for my
Evaluator in my earlier email.  The correct profiling result
is included below.  I also included the profile of run for
my Evaluator when it was usinng my copying collector.
If you look at the results, it looks as though the version using my copying
collector is slower than one using Boehm collector.  That is
not the case -- I remeasured relative speeds,
and the inclusion of Boehm collector slows my
program by a factor very close to 2.
(Not 2.5 as I said in earlier email).

    The fact that Boehm collector uses only 32% (GC_malloc +
GC_malloc_atomic) of overall execution time does not convey
the whole picture.  After I started using it, my whole program
slowed down, even in sections that was not calling GC_malloc.
I have no idea why it should be so -- this is where doing computer
work feels like voodoo.

   Perhaps part of my problem is that I am using C++ interface
rather than C interface, rather than using the
Boehm collector.When I ported to Boehm
collector, I included more C++ syntax -- but
most statements I changed are C equivalent or even faster
in terms of speed (??).

    I must be missing something.


============================================================
||  This profile run is the correct one.
||

Module Statistics for tpscript.exe
----------------------------------
    Time in module: 26528.648 millisecond
    Percent of time in module: 100.0%
    Functions in module: 3589
    Hits in module: 6629027
    Module function coverage: 3.7%

        Func          Func+Child           Hit
        Time   %         Time      %      Count  Function
---------------------------------------------------------
   11369.062  42.9    26528.578 100.0      187
Script::Evaluator::Evaluate(class Script::Scheme *,class Script::Environment
*) (eval1.obj)
    7582.324  28.6     7608.891  28.7  2329467 _GC_malloc (gc.dll)
    2987.185  11.3    26528.166 100.0  1578097
Script::Primitive::Invoke(class Script::Scheme * *,int,class
Script::Environment *,class Script::SchemeVM *) (primitives.obj)
     878.060   3.3      878.783   3.3   341136 _GC_malloc_atomic (gc.dll)
     859.823   3.2     1400.314   5.3   139338 Script::PrimitiveBase<class
Script::Addition>::Fun(class Script::Scheme * *,int,class
Script::Environment *,class Script::SchemeVM *) (primitivesnumber.obj)
     462.704   1.7      462.704   1.7   379151 Script::PrimitiveBase<class
Script::VectorRef>::Fun(class Script::Scheme * *,int,class
Script::Environment *,class Script::SchemeVM *) (primitivesvector.obj)
     279.420   1.1      279.420   1.1   338680 Script::Integer::Integer(int)
(objnumbers.obj)

============================================================
||  This profile run is one for my program using copying collector.


Module Statistics for tpscript.exe
----------------------------------
    Time in module: 33731.923 millisecond
    Percent of time in module: 100.0%
    Functions in module: 4067
    Hits in module: 7616101
    Module function coverage: 5.6%

        Func          Func+Child           Hit
        Time   %         Time      %      Count  Function
---------------------------------------------------------
   13619.320  40.4    33731.807 100.0      227
Script::Evaluator::Evaluate(struct Script::Scheme *,struct
Script::Environment *) (eval1.obj)
    6265.637  18.6    33730.767 100.0  1578140
Script::PrimitiveFT::Invoke(struct Script::Primitive *,struct Script::Scheme
* *,int,class Script::SchemeVM *) (primitives.obj)
    3255.299   9.7     3255.299   9.7  1748575
Script::Recycler::AllocateNOGC(int,int &) (recycler.obj)
    1564.422   4.6     2526.844   7.5   379151 Script::PrimitiveBase<class
Script::VectorRef>::Fun(struct Script::Primitive *,struct Script::Scheme *
*,int,class Script::SchemeVM *) (primitivesvector.obj)
    1059.304   3.1     1328.214   3.9   139338 Script::PrimitiveBase<class
Script::Addition>::Fun(struct Script::Primitive *,struct Script::Scheme *
*,int,class Script::SchemeVM *) (primitivesnumber.obj)
     818.749   2.4      818.749   2.4   558899
Script::VectorFT::Dimension(struct Script::Scheme *) (objvector.obj)
     633.502   1.9      808.520   2.4   344876 Script::Recycler::Copy(struct
Script::Scheme *,void * &) (recycler.obj)
     549.137   1.6      549.137   1.6   499194
Script::VectorFT::ElementAt(struct Script::Scheme *,int) (objvector.obj)