Quality aspects: Performance
Quality aspects: Performance
Importance of performance aspects
Implementation of performance aspects
Tools for Code efficiency and speed
Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Code efficiency and speed:Guidelines | Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Code efficiency and speed:Tools | |
---|---|---|
6 | teaching of computing architectures and programming techniques in various schools | CERN school of computing thematic CERN schools Bertinoro schools on performance engineering |
7 | General software engineering best practices, performance optimization techniques | Profiling tools such as New Relic, Dynatrace. |
9 | so many… | |
10 | No community specific guidelines - but there are many tools around, e.g. | https://codingspeedtest.com |
20 | Study of algorithm efficiency and big O notation | |
22 | Constant upgrading of algorithms based on current state of the art research on that topic. Use of new hardware efficiently. | CUDA, HLS etc. |
Tools for Correctness of output & accuracy
Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Correctness of output & accuracy:Guidelines | Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Correctness of output & accuracy:Tools | |
---|---|---|
2 | Implementation of test batteries using some framework related to the programming language of the code | |
6 | test suites comparing to reference values e.g. implemented via google test, ctest, etc. | |
7 | Data quality standards and validation protocols. | Testing frameworks like JUnit, pytest, data validation tools. |
9 | testing | |
10 | Typically by tests against different previous versions of the code. | |
20 | Test environments and suites | unittest for python applications |
22 | Constant feedback loop of benchmarking and testing algorithms for physics performance. | https://acts.readthedocs.io/en/latest/contribution/physmon.html |
Tools to Perform Code Profiling
Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Perform Code Profiling :Guidelines | Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Perform Code Profiling :Tools | |
---|---|---|
2 | Measuring the coverage of the tests, so you can know how much code is covered by the test batteries. | |
6 | C++ and GPU profiling tools (valgrid suite, perf, nsight systems, nsight compute, …) | |
7 | Regular performance assessments and optimization cycles. | Profiling tools such as VisualVM, JProfiler. |
20 | Profiling code using tools for analysis of memory leaks and execution speed | perf for C++ applications |
22 | https://acts.readthedocs.io/en/latest/contribution/profiling.html | Standard static and dynamic analysis, hardware specific profilers such as Nvidia Nsight tools for CUDA devices etc. |
Tools for the Extendability of code
Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Extendability of code:Guidelines | Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Extendability of code:Tools | |
---|---|---|
2 | Publishing focused functionalities as reusable libraries in the proper ecosystem | |
7 | Modular design principles, use of design patterns that support extension. | Dependency management tools like Maven, Gradle. |
Tools for Maintainability of software project
Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Maintainability of software project:Guidelines | Which specific guidelines or tools are you aware of that help to enable the quality aspects? Provide short descriptions and/or URLs if possible, leave empty if there are no specific guidelines or tools. Maintainability of software project:Tools | |
---|---|---|
2 | Usage of CI workflows composed by linting and static typing validation tools in different scenarios (several implementations of the compiler or interpreter, for instance) which help to uncover potential corner cases or issues | pylint, ruff, mypy, pre-commit |
7 | Code documentation standards, refactoring practices | Documentation tools such as Sphinx, Doxygen |
10 | Typically standard dependencies and operating systems are provided by the research infrastructures | |
22 | SonarQube suite |
Auto-created summary
Summary of Mentioned Practices
-
Test Suites and Frameworks (High Relevance)
Implementing test batteries using frameworks such as Google Test, cTest, JUnit, and pytest. These tools facilitate validation against reference values and ensure output correctness and accuracy. -
Profiling and Optimization (High Relevance)
Regular performance assessments and C++/GPU profiling tools like Valgrind, perf, nsight systems, and hardware-specific profilers like Nvidia Nsight tools, are essential for code profiling and optimization cycles. -
Code Efficiency and Speed Techniques (Medium-High Relevance)
Adopt general software engineering best practices, teaching computing architectures, and updating algorithms based on the latest research to enhance code efficiency and speed. -
Performance Monitoring and Tools (Medium-High Relevance)
Use profiling tools like VisualVM, JProfiler, and standard techniques for static and dynamic analysis to monitor performance and optimize for execution speed and memory leak analysis. -
Modular Design and Extendability (Medium Relevance)
Applying modular design principles, design patterns supporting extension, and publishing functionalities as reusable libraries to enhance extendability and simplify dependency management with tools like Maven and Gradle. -
Maintainability Practices (Medium Relevance)
Enforcing CI workflows and code documentation standards, complemented by CI tools like pylint, ruff, mypy, and documentation tools such as Sphinx and Doxygen, improves software project maintainability. -
Algorithm Study and Update (Medium Relevance)
Emphasis on the study of algorithm efficiency, Big O notation, and continuous updates based on current research for algorithm performance enhancement. -
Community and Educational Initiatives (Low-Moderate Relevance)
Involvement in educational initiatives such as CERN schools and thematic schools on performance engineering fosters community-specific knowledge and skill advancement in various aspects of computing.
Table of Linked URLs
URL | Description |
---|---|
https://codingspeedtest.com | A tool mentioned for assessing code speed and efficiency. |
https://acts.readthedocs.io/en/latest/contribution/physmon.html | Documentation for performance monitoring in physics simulations. |
https://acts.readthedocs.io/en/latest/contribution/profiling.html | Documentation on profiling techniques and tools. |