7 __author__ =
"Sebastien Binet <binet@cern.ch>"
8 __version__ =
"$Revision: 1.1 $"
10 a set of simple minded functions to test ROOT I/O (from python)
13 from array
import array
as carray
19 from os
import sysconf
20 _pagesz = sysconf(
'SC_PAGE_SIZE') // 1024
26 """translates the usual python 'dtype' codes to the ROOT/CINT ones
29 from PyUtils.Decorators
import forking
32 """returns (cpu[ms], vmem[kb], rss[kb])
34 from resource
import getrusage, RUSAGE_SELF
35 from string
import split
as ssplit
36 cpu = getrusage(RUSAGE_SELF)
37 mem =
open(
'/proc/self/statm',
'r')
38 cpu = (cpu.ru_utime+cpu.ru_stime) * 1e3
39 mem = ssplit(mem.readlines()[0])
40 vmem =
int(mem[0])*_pagesz
41 rss =
int(mem[1])*_pagesz
47 assert len(d[
'start']) == 3
48 assert len(d[
'stop']) == 3
51 delta = {
'cpu' : d[
'stop'][0] - d[
'start'][0],
52 'vmem': d[
'stop'][1] - d[
'start'][1],
53 'rss' : d[
'stop'][2] - d[
'start'][2],
57 delta[
'nbytes'] = d[
'nbytes']
58 print (
"==> cpu: %(cpu)8.3f ms vmem: %(vmem)i kB rss: %(rss)i kB nbytes: %(nbytes)i kB" % delta)
64 if '-b' not in sys.argv:
65 sys.argv.insert(1,
'-b')
73 """testing writing 1000 evts with arrays of 1000- integers
75 f = ROOT.TFile.Open(fname,
'RECREATE')
76 t = ROOT.TTree(
't',
't')
80 data = carray(dtype, imax*[ 0 ] )
82 t.Branch(
'i', data,
'data[%d]/%s'%(imax, _py_dtype_to_root[dtype]) )
84 from random
import randint
87 for i
in range(nevts):
89 data[j] = randint(0, sz)
98 f = ROOT.TFile.Open(fname,
'READ')
100 assert t,
"could not find tree 't'"
101 nevts = t.GetEntries()
103 print (
"::: reading [%s] (%i events) [sz=%s kB]" % (fname, nevts,
106 get_entry = t.GetEntry
108 for ievt
in range(nevts):
115 assert len(t.data) > 0
121 return {
'start' : start,
123 'nbytes': tot_bytes//1024}
127 """testing writing 1000 evts with arrays of (variable length) 1000- ints
129 f = ROOT.TFile.Open(fname,
'RECREATE')
130 t = ROOT.TTree(
't',
't')
135 n = carray(
'i', [ 0 ] )
136 data = carray( dtype, imax*[ 0 ] )
137 t.Branch(
'sz', n,
'sz/I' )
138 t.Branch(
'data', data,
'data[sz]/%s'%_py_dtype_to_root[dtype])
140 from random
import randint
143 for i
in range(nevts):
144 jmax = randint(1, sz)
146 for j
in range(jmax):
147 data[j] = randint(0, sz)
156 f = ROOT.TFile.Open(fname,
'READ')
158 assert t,
"could not find tree 't'"
159 nevts = t.GetEntries()
161 print (
"::: reading [%s] (%i events) [sz=%s kB]" % (fname, nevts,
164 get_entry = t.GetEntry
166 for ievt
in range(nevts):
173 assert len(t.data) > 0
179 return {
'start' : start,
181 'nbytes': tot_bytes//1024}
185 if __name__ ==
"__main__":
187 print (
"::: running all tests...")
197 fname =
'/tmp/out_test1_ints.root'
199 nevts=100000, sz=1000,
201 mon_data[
'io_test1-ints'] = []
202 for _
in range(nreads):
206 fname =
'/tmp/out_test1_flts.root'
208 nevts=100000, sz=1000,
210 mon_data[
'io_test1-flts'] = []
211 for _
in range(nreads):
219 fname =
'/tmp/out_test2_ints.root'
221 nevts=100000, sz=1000,
223 mon_data[
'io_test2-ints'] = []
224 for _
in range(nreads):
228 fname =
'/tmp/out_test2_floats.root'
230 nevts=100000, sz=1000,
232 mon_data[
'io_test2-flts'] = []
233 for _
in range(nreads):