Manual micro-optimizations in C++: An investigation of four micro-optimizations and their usefulness

DSpace Repository

Manual micro-optimizations in C++: An investigation of four micro-optimizations and their usefulness

Details

Files for download
Icon
Overview of item record
Publication Bachelor thesis
Title Manual micro-optimizations in C++: An investigation of four micro-optimizations and their usefulness
Author Ekström, Viktor
Date 2019
English abstract
Optimization is essential for utilizing the full potential of the computer. There are several different approaches to optimization, including so-called micro-optimizations. Micro-optimizations are local adjustments that do not change an algorithm. This study investigates four micro-optimizations: loop interchange, loop unrolling, cache loop end value, and iterator incrementation, to see when they provide performance benefit in C++. This is investigated through an experiment, where the running time of test cases with and without micro-optimization is measured and then compared between cases. Measurements are made on two compilers. Results show several circumstances where micro-optimizations provide benefit. However, value can vary greatly depending on the compiler even when using the same code. A micro-optimization providing benefit with one compiler may be detrimental to performance with another compiler. This shows that understanding the compiler, and measuring performance, remains important.
Swedish abstract
Optimering är oumbärligt för att utnyttja datorns fulla potential. Det finns flera olika infallsvinklar till optimering, däribland så kallade mikrooptimeringar. Mikrooptimeringar är lokala ändringar som inte ändrar på någon algoritm. Denna studie undersöker fyra mikrooptimeringar: loop interchange, loop unrolling, cache loop end value, och iterator-inkrementering, för att se när de bidrar med prestandaförbättring i C++. Detta undersöks genom experiment, där körtiden för testfall med och utan mikrooptimeringar mäts och sedan jämförs. Mätningar görs på två kompilatorer. Resultatet visar flera situationer där mikrooptimeringar bidrar med prestandaförbättringar. Värdet kan däremot variera beroende på kompilator även när samma kod används. En mikrooptimering som bidrar med prestandaförbättring med en kompilatorn kan ge prestandaförsämring med en annan kompilator. Detta visar att kompilatorkännedom, och att mäta, är fortsatt viktigt.
Publisher Malmö universitet/Teknik och samhälle
Language eng (iso)
Subject C++
Optimization
Micro-optimization
Handle http://hdl.handle.net/2043/29177 Permalink to this page
Link to publication in DiVA Find this research publication in DiVA.
Facebook

This item appears in the following Collection(s)

Details

Search


Browse

My Account

Statistics