RE: [ROOT] Performance question: Updating a colz histogram

From: Valeri Fine (fine@bnl.gov)
Date: Sun Sep 08 2002 - 05:58:48 MEST


Hello Ed,
 I am sorry I had had a few days of vacation and missed your message.
 Please send me your project to try.

> Valeri,
>  Here are some more details (not in order asked)
> 
> 2. I had the same problem in V 3.02/7 as well as 3.03/8
> 
> 4. I am using a standalone root based application - e.g. I
>    create an instance of TRint.  The application is an MFC
>    SDI application where I took special pains to wrap the
>    root stuff in its own class that does not have #include
>    "stdafx.h" or any other windows/mfc stuff.
> 
> 1. My application's view class has an OnTimer() method
>    which in turn calls p2DH->Draw("colz") and
>    gPad->GetCanvas()->Update().
> 
> 3. If you like, I could make a small mfc project that
>    displays the problem I'm having.
> 
> Note: you mention in subsequent e-mail that it is not
> necessary to call the Draw() method each time.  If I do
> not call the Draw() method each time, nothing gets displayed.
> 
> Note: The histogram is filled in a different thread than
> it is displayed.  I use a win32 semaphore to protect the
> object's filling with its display.
> 
> Note 2: In addition to the 2D histogram, I also have a couple
> of 1-D histograms. [The object to display/update is seleceted
> at runtime.  All objects are filled all the time] The 1D
> histograms updating never slows down, only the 2D histograms
> 
[Valeri Fine] 
   Have you observed the slowing down with other 3D option but "colz"
   My guess only that option causes your problem doesn't it?

[Valeri Fine] 
 I really want to see your project. Anyway a few comments:
  
 1. Win32 version of ROOT performs the TCanvas painting in a separate
thread anyway.

 2. I guess you should use ROOT TTimer class to manage things properly
instead of your OnTime.

 3 I think ->GetCanvas()->Update(). Is not sufficient. First you need
gPad->Modified();
 
Try this and remove the extra Draw's method.


  Best regards, Valeri


> Ed Oltman
> 
> > -----Original Message-----
> > From: Valeri Fine [mailto:fine@bnl.gov]
> > Sent: Friday, August 30, 2002 5:31 PM
> > To: 'Ed Oltman'; 'Roottalk@Pcroot. Cern. Ch'
> > Subject: RE: [ROOT] Performance question: Updating a colz histogram
> >
> >
> > Hello Ed,
> >  Sorry, you didn't send an example to reproduce your troubles so I
have
> > to ask you some extra questions:
> >
> >    1. What kind of timer do you use: synch or asynch ?
> >    2. Did you see this problem before (with the previous version of
> > ROOT) ?
> >    3. Can you work out a small macro / code to reproduce the problem
?
> >    4. Do you use "ROOT + macro"; "Root + your custom DLL"; your
> > ROOT-based application alone ?
> >
> >   Thank you
> >               Valeri
> >
> > -----Original Message-----
> > From: owner-roottalk@pcroot.cern.ch
> > [mailto:owner-roottalk@pcroot.cern.ch] On Behalf Of Ed Oltman
> > Sent: Friday, August 30, 2002 5:35 PM
> > To: Roottalk@Pcroot. Cern. Ch
> > Subject: [ROOT] Performance question: Updating a colz histogram
> >
> > Hello,
> >  I have an online application which includes a 500x500 bin TH2F
which I
> > display in response to a timer with
> >
> >     p2DH->Draw("colz");
> >     gPad->GetCanvas()->Update();
> >
> > (I've previously called gStyle->SetPalette(1,0))  Early on, when the
> > histogram is still young, the refresh is pretty quick - refreshing
at 2
> > Hz
> > uses a small amount (<10%) of the cpu time. Gradually, as the
histogram
> > fills, the refresh time increases - by the time the histogram has a
few
> > hundred thousand entries, (maximum bin contents is in the 10s) the
cpu
> > time
> > is 80% and climing.
> >
> > Is there something I could do to speed things up, short of adjusting
the
> > refresh rate?  I am using version 3.03/08 on Win32.  Thanks...
> >
> > Ed Oltman
> >
> >
> >
> >
> >



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:08 MET