Ein immer wiederkehrender Gedanke bei der SoftwareOptimierung: Man opfert Speicherplatz um ein Plus an Performance zu erzielen. Dies kann Speicherplatz für Code sein: man schreibt mehr Befehle, die aber schneller ausgeführt werden. Meist handelt es sich aber um den Speicherplatz für Tabellen, welche die vorbereiteten Resultate von Berechnungen enthalten. |
Ein immer wiederkehrender Gedanke im Zusammenhang mit SoftwareOptimierungsTechniken: Man opfert Speicherplatz um ein Plus an Performance zu erzielen. Dies kann Speicherplatz für Code sein: man schreibt mehr Befehle, die aber schneller ausgeführt werden. Meist handelt es sich aber um den Speicherplatz für Tabellen, welche die vorbereiteten Resultate von Berechnungen enthalten. |
Typische Beispiele:
Die Idee funktioniert natürlich auch in die andere Richtung. Man opfert Performance - meist in einem Bereich der nicht zeitkritisch ist - und gewinnt dafür Speicherplatz, den man an anderer - zeitkritischer - Stelle besser verwerten kann.
Ein typisches Beispiel dafür ist die Repräsentation von Mengen (typische Anzahl von Elementen 100-100M). Beim Übergang von 'char' zu 'Bit' als Repräsentationsform eines Elements sind statt der normalen Array-Zugriffe Funktionen notwendig. Das kostet vermutlich einen Faktor 3-10 in der Geschwindigkeit, bringt jedoch einen Faktor 8 im Speicheraufwand.
Wobei Einzelbitfelder (in C: bit:1;) beherzt verwendet werden können, denn diese
sind kaum performance-schädlich. Besonders nicht auf Mikrokontrollern, die recht
schnelle Bit-Instruktionen besitzen.
Mehr Kode und mehr Zeit kosten Bitfelder mit von 1,8,16,32 abweichenden Bit-Anzahlen.--hs