Re: [ROOT] drawing speed in online monitoring

From: Eddy Offermann (eddy@rentec.com)
Date: Fri Feb 16 2001 - 16:42:26 MET


Hi Damir,

I guess I am responsible for the effects you are seeing.
Around version 2.23 I submitted a change to the drawing engine.
Before the change the drawing speed was canvas size independ, it would have
taken 14 sec in both of your cases.
I made the algorithm smarter. If you draw your histogram with a simple
line, it decides whether draw it in low or high res mode. In low-res mode,
it first looks up the number of pixels
of your canvas in the horizontal direction. Then, for each pixel it will
calculate the minimum and maximum vertical pixel and will then draw a vertical
line connecting them, obviously saving a lot of time when the canvas is
smaller

for details look in TGraph.cxx and serach for the following lines

    // Make here decision whether it should be painted in high or low resolution
    Int_t lowRes = 0;

Here the algorith starts.

I thought it was the best kept secret in ROOT, oh well you find out :-}

Eddy

> X-Authentication-Warning: pcroot.cern.ch: majordomo set sender to 
owner-roottalk@root.cern.ch using -f
> Date: Fri, 16 Feb 2001 15:04:23 +0100
> From: Damir Buskulic <buskulic@lapp.in2p3.fr>
> X-Accept-Language: en
> MIME-Version: 1.0
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] drawing speed in online monitoring
> Content-Transfer-Encoding: 7bit
> X-Filter-Version: 1.3 (wren)
> 
> Hi,
> 
> There was a thread a few months ago about drawing speed of ROOT. I'm
> trying to replace PAW routines by ROOT ones in an online data display
> program. The main observed difference is the drawing speed in the case
> of ROOT, which is much slower than PAW. While I can understand this (a
> factor of two in the best case) it is difficult to understand the
> variation of drawing speed with the canvas size. Try the following macro
> :
> 
> {
>   gBenchmark->Start("toto");
>   c1 = new TCanvas("c1","test",10,10,700,700);
>   h = new TH1F("h","h",1000,0,10);
>   for (int i=1;i<100;i++) {
>      h->Fill(gRandom->Gaus(5,1.5),1);
>      h->Draw();
>      gPad->Update();
>   }
>   gBenchmark->Show("toto");
> }
> 
> on my machine this needs around 14 s real time to be completed (Alpha
> XP1000).
> change the size of the canvas to 50x50 (not usable, it's just for
> demonstrating the effect), the real time goes down to 2.8s !
> 
> Though fons explained the speed difference between PAW and ROOT, he
> stated that the drawing speed should not depend much on the canvas size.
> This is true for CPU time but not for real time.
> 
> I also tested on a distant display, and the results are the same (14s
> and 3s).
> 
> In our context, and if this figure cannot be changed, I don't see yet
> how to use root to display in real time a set of 10 histograms or plots.
> 
> Anyone has a suggestion ? it will be welcome !
> 
> Cheers
> 
> Damir
> -- 
> =====================================================================
> | Damir Buskulic                  | Universite de Savoie/LAPP       |
> |                                 | Chemin de Bellevue, B.P. 110    |
> | Tel : +33 (0)450091600          | F-74941 Annecy-le-Vieux Cedex   |
> | e-mail: buskulic@lapp.in2p3.fr  | FRANCE                          |
> =====================================================================
> mailto:buskulic@lapp.in2p3.fr

Eddy A.J.M. Offermann
Renaissance Technologies Corp.
Route 25A, East Setauket NY 11733
e-mail: eddy@rentec.com
http://www.rentec.com



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