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

From: Philippe Canal (pcanal@fnal.gov)
Date: Sun Sep 08 2002 - 05:29:32 MEST


Hi Ed,

> If I do not call the Draw() method each time, nothing gets displayed.

The Draw method needs to be call once and once only.  If you already do that
and get nothing display then I have to assume that the histogram is deleted
and created at each update.  It this is the case, you have an obvious
optmization available.  In most case it is more efficient in the 'displayer'
to have the same histogram be drawn and add/sustract to it or even Reset it
and keep it displayed.

If you can make a small sample example, this would be helpful.

Cheers,
Philippe
-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Ed Oltman
Sent: Tuesday, September 03, 2002 8:35 AM
To: fine@bnl.gov; 'Roottalk@Pcroot. Cern. Ch'
Subject: RE: [ROOT] Performance question: Updating a colz histogram


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

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