go-hep.org/x/hep@v0.38.1/xrootd/bench_test.go (about)

     1  // Copyright ©2022 The go-hep Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package xrootd_test
     6  
     7  import (
     8  	"testing"
     9  
    10  	"go-hep.org/x/hep/groot"
    11  	_ "go-hep.org/x/hep/groot/riofs/plugin/xrootd"
    12  	"go-hep.org/x/hep/groot/rtree"
    13  )
    14  
    15  func BenchmarkRead(b *testing.B) {
    16  	const (
    17  		fname = "root://ccxrootdgotest.in2p3.fr:9001/tmp/rootio/testdata/SMHiggsToZZTo4L.root"
    18  		tname = "Events"
    19  	)
    20  
    21  	f, err := groot.Open(fname)
    22  	if err != nil {
    23  		b.Fatal(err)
    24  	}
    25  	defer f.Close()
    26  
    27  	o, err := f.Get(tname)
    28  	if err != nil {
    29  		b.Fatal(err)
    30  	}
    31  
    32  	tree := o.(rtree.Tree)
    33  	read := func(tree rtree.Tree) error {
    34  		r, err := rtree.NewReader(tree, rtree.NewReadVars(tree))
    35  		if err != nil {
    36  			b.Fatal(err)
    37  		}
    38  		defer r.Close()
    39  
    40  		return r.Read(func(rctx rtree.RCtx) error {
    41  			_ = rctx.Entry
    42  			return nil
    43  		})
    44  	}
    45  
    46  	b.ResetTimer()
    47  	for i := 0; i < b.N; i++ {
    48  		err := read(tree)
    49  		if err != nil {
    50  			b.Fatal(err)
    51  		}
    52  	}
    53  }