go-hist: a multi-threaded Go package for histogramming

Current HENP libraries and frameworks were written before multicore systems became widely deployed and used. From this environment, a 'single-thread' processing model naturally emerged but the implicit assumptions it encouraged are greatly impairing our abilities to scale in a multicore/manycore world. Thanks to C++11, C++ is finally slowly catching up with regard to concurrency constructs, at the price of further complicating the language and its standard library. Instead, the approach of the Go language is to provide simple concurrency enabling building blocks, readily integrated into the language, in the hope that these goroutines and channels will help to design, write and maintain concurrent applications. To further investigate whether Go is a suitable C++ and python replacement language for HENP, we developed go-hist, a multi-threaded Go package for histogramming. We will first present the overall design of the go-hist package and the various building blocks (goroutines, channels and wait-groups) provided by the Go language which are then leveraged by this library. A special emphasis will be put on the current SIMD support available in Go and thus how vectorization can be leveraged in histogramming code: a cornerstone for automatic performance scalability on the ever-wider-registers architectures the future has in store. Then, I/O considerations, such as read/write performances, ease of serialization and disk sizes will be discussed, for each of the currently implemented backends (protobuf, gob and json.) Finally, comparisons with ROOT, Java ROOT and inlib/exlib (an AIDA implementation in C++) performances will be presented.

Data and Resources

Additional Info

Field Value
Source 20th International Conference on Computing in High Energy and Nuclear Physics (CHEP)
Author Binet, S.
Maintainer CCSD
Last Updated May 9, 2026, 09:21 (UTC)
Created May 9, 2026, 09:21 (UTC)
Identifier in2p3-00872849
Language en
contributor Laboratoire de l'Accélérateur Linéaire (LAL) ; Université Paris-Sud - Paris 11 (UP11)-Institut National de Physique Nucléaire et de Physique des Particules du CNRS (IN2P3)-Centre National de la Recherche Scientifique (CNRS)
coverage Amsterdam, Netherlands
creator Binet, S.
date 2013-10-14T00:00:00
harvest_object_id d91c1616-7e19-480a-a009-055b7aaec80a
harvest_source_id 3374d638-d20b-4672-ba96-a23232d55657
harvest_source_title test moissonnage SELUNE
metadata_modified 2024-04-11T00:00:00
set_spec type:POSTER