An Empirical Study on Parallelism in Modern Open-Source Projects
Writing parallel programs is hard, especially for inexperienced programmers. Parallel language features are still being added on a regular basis to most modern object-oriented languages and this trend is likely to continue. Being able to support developers with tools for writing and optimizing parallel programs requires a deep understanding of how programmers approach and implement parallelism.
We present an empirical study of 135 parallel open-source projects in Java, C# and C++ ranging from small (< 1000 lines of code) to very large (> 2M lines of code) codebases. We examine the projects to find out how language features, synchronization mechanisms, parallel data structures and libraries are used by developers to express parallelism. We also determine which common parallel patterns are used and how the implemented solutions compare to typical textbook advice.
The results show that similar parallel constructs are used equally often across languages, but usage also heavily depends on how easy to use a certain language feature is. Patterns that do not map well to a language are much rarer compared to other languages. Bad practices are prevalent in hobby projects but also occur in larger projects.
|Zugehörige Institution(en) am KIT
||Institut für Programmstrukturen und Datenorganisation (IPD)
KITopen ID: 1000052153
||SEPS 2015 : Proceedings of the 2nd International Workshop on Software Engineering for Parallel Systems, Fri 23 - Fri 30 October 2015 Pittsburgh, Pennsylvania, United States
||ACM, New York (NY)
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
KITopen Landing Page