160 likes | 337 Views
C++. Looking at Code Size and Performance. Kevin Muys. Overzicht. Hoe efficiënt is C++ vergeleken met C Hoe beïnvloed C++ het benodigde geheugen Oplossingen voor de problemen Besluit. Efficiëntie C++ vergeleken met C. C++ gebruiken zoals C => geen extra overhead Verbeterde type checking
E N D
C++ Looking at Code Size and Performance Kevin Muys
Overzicht • Hoe efficiënt is C++ vergeleken met C • Hoe beïnvloed C++ het benodigde geheugen • Oplossingen voor de problemen • Besluit
Efficiëntie C++ vergeleken met C • C++ gebruiken zoals C => geen extra overhead • Verbeterde type checking • Object Georiënteerd-> performantieproblemen? • Makkelijk hergebruik van code • Makkelijker onderhoud
Overzicht • Hoe efficiënt is C++ vergeleken met C • Hoe beïnvloed C++ het benodigde geheugen • Oplossingen voor de problemen • Besluit
Invloed C++ op het geheugen • Templates • Inline functies • Virtuele functies • Inheritance • Gedupliceerde debug informatie
Templates • 1 klasse of functie voor verschillende datatypes • Templates delen of niet? -> compiler beslist
Inline functies • Keyword inline • Geen functieoproep nodig • Soms onmogelijk om te inlinen - bij recursieve oproep - bij een complexe flow-of-control => geen performantiewinst + meer code
Virtuele functies • Via virtuele functie tabellen
Virtuele functies • Sommige compilers: Overal creëren waar ze opgeroepen worden • Beter:Enkel creëren waar ze gedefinieerd worden
Inheritance • Sommige compilers: Voor elke afgeleide klasse -> kopie van de virtuele basis klasse • Beter:1 virtuele basis klasse
Gedupliceerde debug informatie • Vroeger:Debug info voor alles in included file, ook als het niet werd gebruikt => Link tijd Debug tijd Hoeveelheid code
Overzicht • Hoe efficiënt is C++ vergeleken met C • Hoe beïnvloed C++ het benodigde geheugen • Oplossingen voor de problemen • Besluit
Oplossingen voor de problemen • Snellere compileer en link tijden • Minder code
Snellere compileer en link tijden • Vroeger van C++ -> C omzetten • Nu rechtstreeks naar assembly • Enkel rekening houden met gebruikte functies => link tijd
Minder code • Compiler:Zorgen voor maar 1 virtuele functie tabel en 1 virtuele basis klasse • Linker: Gedupliceerde code en data samen nemenNiet gebruikte code negeren
Besluit • C++ standaard taal voor programmeren van embedded systemen • Compilatie technieken moeten zorgen voor compacte code • C++ en C verschillende compileertechnieken Vragen?