Re: [ROOT] TQObject::Emit()

From: Anton Fokin (anton.fokin@smartquant.com)
Date: Fri Mar 23 2001 - 10:13:05 MET


Hi Valery,

I meant that Emit("DataChanged()") call might be time consuming since you
take an argument as char string, compress it and loop over class and object
signal/connection lists (why don't you use hash table, btw?). I was curious
how it is done in Qt/moc. If you say it does nearly the same, no probs. A
benchmark test could be like

while (end_test) {
  DataChanged();
}

with and without Emit() in DataChanged(). Of course nobody should be
connected to this signal. On the other hand result will depend on how long
are lists of signals...

> > I am also not sure what it takes in Qt/moc. In Qt you do not need to
call
> > Emit() in a signal method - the signal will be emitted automatically
once
> > the method is declared as signal.
> >
>
> ("It is not correct ..."  Valery Fine;)
>
>
> I studied Qt code ... it also uses "Emit" method inside "signal"
> Suppose looking at the code produced after MOC preprocessor will reveal
it.
> > I am also not sure what it takes in Qt/moc. In Qt you do not need to
call
> > Emit() in a signal method - the signal will be emitted automatically
once
> > the method is declared as signal.
> >
>
> ("It is not correct ..."  Valery Fine;)
>
>
> I studied Qt code ... it also uses "Emit" method inside "signal"
> Suppose looking at the code produced after MOC preprocessor will reveal
it.


Yes, that was the questions. I meant that a user does not need to put Emit()
in the body of a signal method in Qt - moc does it. I asked if it is done in
a clever way since moc has control over the code and can make some "direct"
substitutions.

Regards,
Anton

http://www.smartquant.com


----- Original Message -----
From: Valeriy Onuchin <onuchin@fnal.gov>
To: Anton Fokin <anton.fokin@smartquant.com>
Cc: <roottalk@pcroot.cern.ch>
Sent: Thursday, March 22, 2001 11:27 PM
Subject: Re: [ROOT] TQObject::Emit()


> Hi Anton,
>
> Anton Fokin wrote:
>
> >
> >
> > Hi,
> >
> > If I want to use singal/slots I have to add Emit("DataChanged()"); or
alike
> > in my TQObject inherited class method to emit a signal. I am curious if
this
> > call is costly or not.
>
>  What cost do you mean?
>
>  Memory?
>
>     TQObject has 2 data members which are pointers to
Lists( sizeof(TList*) = 4 ).
>     These TLists are created(new TList) only when connection is
established
>     ( sizeof(TList) = 44 ). During creation of connection some internal
structures
>     are also initiated, but it was designed to make it minimal amd reuses
existent ones.
>
>
> >
> >
> > I am also not sure what it takes in Qt/moc. In Qt you do not need to
call
> > Emit() in a signal method - the signal will be emitted automatically
once
> > the method is declared as signal.
> >
>
> ("It is not correct ..."  Valery Fine;)
>
>
> I studied Qt code ... it also uses "Emit" method inside "signal"
> Suppose looking at the code produced after MOC preprocessor will reveal
it.
>
>
>
> >
> > So could you comment on performance of Emit("DataCahnged()") decoding
(with
> > CINT dict, etc.) compare to Qt moc processing.
>
> Fair comparison of benchmark tests is always difficult task
> ( btw it's not a bad business
http://www.tpc.org/information/about/join.asp )
>
> Suggest the "fair test" and I/we can try it.
>
>
> Regards.    Valeriy
>
>
>



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET