From: CRISMER Paul-Georges To: bugs@support.eiffel.com Cc: abstraction@access.ch Subject: RE: EiffelBench/2538 Date: Mon, 26 Jun 2000 10:11:55 +0200 Hello, Do you know where the error comes from ? Can you provide me with some information to avoid this problem ? Thank you. Paul G. Crismer > -----Original Message----- > From: bugs@support.eiffel.com [SMTP:bugs@support.eiffel.com] > Sent: Tuesday, June 13, 2000 12:39 PM > To: paul-georges.crismer@groupes.be > Subject: EiffelBench/2538 > > Thank you very much for your problem report. > It has the internal identification `EiffelBench/2538'. > > If you want to add more information to your report or > reply to our answer, please reply to this message > without modifying the subject header. > > The individual assigned to look at your > report is: EiffelBench_team. > > >Category: EiffelBench > >Responsible: EiffelBench_team > >Synopsis: Eiffel profiling count information is erroneous ! > >Arrival-Date: Tue Jun 13 03:39:00 PDT 2000 > >Severity: serious > >Priority: medium > >Confidential: no > >Environment: > Mozilla/4.05 [en] (WinNT; I) > WinNT 4 sp 5 > MSVC++ 5 > > > >Description: > With eiffel profiling. > Count information (calls, percentage, etc...) is erroneous when a > primitive has been redefined and uses precursor. > > When a feature is redefined, count information is counted as many times as > it uses > Precursor. > > For example : > > A) > > LECTEUR_RDBMS lire > Version from class LECTEUR_RDBMS <========= initial definition > LECTEUR_PERSONNE lire > Version from class LECTEUR_PERSONNE <========= uses Precursor > LECTEUR_PERSONNE_DOCUDEC lire > Version from class LECTEUR_PERSONNE_DOCUDEC <= uses Precursor > > times reported for LECTEUR_PERSONNE_DOCUDEC.lire are 3 times the actual > times > > B) > > LECTEUR_RDBMS lire > Version from class LECTEUR_RDBMS <=========== initial definition > LECTEUR_CONTRAT_ONSS lire > Version from class LECTEUR_CONTRAT_ONSS <===== uses Precursor > > times reported for LECTEUR_CONTRAT_ONSS.lire are 2 times the actual times > > > >How-To-Repeat: > State-Changed-From-To: open-suspended State-Changed-By: Manu State-Changed-When: Wed Jun 28 16:15:47 PDT 2000 State-Changed-Why: Dear Paul, The reason why you seems to get wrong number is the following: we associate to a feature the dynamic type of the object that called it and not its static type. As a result when you have: class A feature f is do end end class B redefine f feature f is do Precursor end end when you look at `B.f' the profiler will see that you called `f' from B with a dynamic type B and then you called `f' from A with a dynamic type B. But the profiler keeps only the dynamic type information. We will think on adding an option that either the profiler keeps track of the dynamic type or of the static type when generating the profiling output. Hope this is helpful,