Skip to content
Snippets Groups Projects
user avatar
Rene Brun authored
Extract from a mail from Michal:

"I'm a summer student working for the openlab project (supervisor: Sverre
Jarp). I've been optimizing ROOT on an Itanium platform for a few weeks
and I've found a bug, which, if it's accepted and corrected, will
influence all the ROOT benchmarks that have been done by now.

What I've found is that all zip/*.c files use the variable 'level' which
is declared in ZIP.h as a static (local) variable. The result is that
calling R__zip(1, ...) (as in the 'stress' program) changes the 'level'
variable only in the Bits.c file, but its value remains default ( == 6) in
the others. The resulting compressed file is still correct, but the
drawback is quite huge slow-down of the programs like 'stress' which use
data compression intensively.

Some facts: by putting the files: Tree.c, Bits.c and Deflate.c in a single
C file (with some small changes), what makes the 'level' variable appear
in only one copy, I've increased the result of the 'stress' benchmarking
program from 584 RM to 701 RM -- 20% improvement. At the same time, the
size of all compressed data increased by about 1.7%. (Itanium 1000 MHz
machine, Intel compiler v8.0 with -O3 and profile-guided optimization).

The bug is really easy to fix, but it will require all the benchmarks done
in the past to be repeated or rescaled..."


git-svn-id: http://root.cern.ch/svn/root/trunk@7132 27541ba8-7e3a-0410-8455-c3a389f83636
3b2f05c8
History