Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Stefan Reuther <stefan.news@xxxxxxxx>
- Date: Sat, 23 Feb 2008 19:32:58 +0100
Helmut Sennewald wrote:
"Stefan Reuther" <stefan.news@xxxxxxxx> schrieb im Newsbeitrag
C++ macht es einem sehr einfach, Bloat zu erzeugen. Wenn man aber beim
Programmieren sein Hirn zusammennimmt, und die Compilerdoku mit offenen
Augen liest, ist C++ nicht ineffizienter als C. Das einzige Feature, was
auch dann was kostet, wenn man's nicht benutzt, sind Exceptions. Die
kann man bei jedem mir bekannten Compiler abschalten. Übrig bleibt, wenn
man anständig programmiert hat, Code, der äquivalent zum entsprechenden
C-Code ist, aber kompakter zu schreiben und einfacher zu pflegen ist.
nach all der vielen Theorie hier mal eine Erfahrung aus dem
wahren Leben.
Keine Sorge, ich praktiziere ebenfalls. Unter anderem baue ich
Gerätetreiber. Einige davon ersetzen welche, die früher in C geschrieben
waren. Meine Versionen sind bisher eigentlich immer mit 20-50% kürzerem
Quellcode ausgekommen, waren aber als Kompilat nicht größer als die
Originale.
Oder (weil ich mir die Codegröße gerade gestern angeschaut habe) ein
kompletter Dateisystem-Stack, mit ISO9660 Level 3, Joliet, UDF 2.0 sowie
FAT12-FAT32 mit Schreibunterstützung und langen Dateinamen, alles mit
Unicode-Unterstützung, und (unbeabsichtigterweise) neuerdings sogar
Unterstützung für Loopback-Mount: sind 40k Code zuviel dafür?
Wir hatten ein Gerät dessen Firmware in C geschrieben war.
Das Prozessorsystem mit MC68xxx hatte 512kFlash und 1MB RAM.
Das nachfolgende Gerät mit ähnlicher Funktionalität wurde
dann von einem größeren Team von Grund auf in C++ entwickelt.
Am Ende hatten wir doppelten Speicherbedarf bei Flash und RAM.
Dabei hatten die ihre SW-Architektur sogar optimiert(reduziert)
um nicht noch mehr Speicher zu verbrauchen.
Kann passieren. Ich sagte ja, C++ macht es sehr einfach, Bloat zu
erzeugen. Allerdings gibt es sprachunabhängig auch den Second-System-
Effekt. Wenn man ein Feature mal eben in die quasi fertige Firmware
reinhackt (globale Variable + hier und dort noch ein 'if') ist das
natürlich hässlich, aber weniger Code, als wenn man sich beim nächsten
Entwurf gleich vornimmt, Raum für Features dieser Art zu lassen. Ich
würde wetten, dass die neue Firmware auch dann größer geworden wäre als
die alte, wenn sie in C geschrieben worden wäre.
Fazit: Wer wirklich C++ ausnutzt in seiner SW-Architektur,
der sollte auch gleich zum nächst schnelleren Prozessor greifen
und bei RAM und FLASH nicht sparen.
Definiere "ausnutzen". Es gibt genug Features, die nichts kosten:
- Referenzen
- Klassen
- Namensräume
- syntaktischer Zucker, wie Laufvariable im 'for' deklarieren
- Operatorüberladung
Stefan
.
- Follow-Ups:
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Rainer Heynke
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- References:
- Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Rainer Heynke
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: MaWin
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Hans-Georg Lehnard
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Heiko Nocon
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Stefan Reuther
- Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- From: Helmut Sennewald
- Microcontroller-Programmierung, wo bekomme ich Resourcen her
- Prev by Date: Re: 20mA loop Schnittstelle
- Next by Date: Re: Sozialhilfekabel patentiert?
- Previous by thread: Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- Next by thread: Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
- Index(es):
Relevant Pages
|