Zu beachtende Punkte beim Entwerfen oder Codierung für kleinere Stellfläche zu erbringenden Leistungen

StackOverflow https://stackoverflow.com/questions/2094895

  •  21-09-2019
  •  | 
  •  

Frage

Bitte senden Sie die Punkte man im Auge behalten sollte, während der Gestaltung oder Codierung für kleinere Stellfläche zu erbringenden Leistungen für eingebettete Systeme.

Ich gebe nicht Compiler oder Plattform Details, wie ich allgemeine Informationen wünschen. Aber jede spezifische Informationen zu Linux-basiertes Betriebssystem ist auch willkommen.

War es hilfreich?

Lösung

Abhängig von wie tief Sie erhalten möchten. Ich bin Codierung derzeit für das Geschäftsjahr Drucker, und es gibt kein Betriebssystem und die Hauptregel ist keine dynamische Speicherzuweisung. Das Komische ist, dass ich immer noch die Mannschaft Code vollständig modernen C ++ überzeugt.;)

Eigentlich gibt es ein paar Regeln, die wir beschlossen:

  • keine dynamische Zuordnung
  • daher kein STL
  • keine Ausnahmebehandlung (offensichtliche Gründe)

Andere Tipps

Es gibt keine allgemeine Antwort , nur diejenigen, die spezifisch für Sprache / Plattform ... aber

Kleiner Speicherbedarf ...

  1. Verwenden Sie keine Java, C # / Mono, PHP, Perl, Python oder etwas mit der Garbage Collection
  2. Get als der Nähe des Metall wie möglich , Verwenden von C
  3. Do Menge Profilierungs zu sehen, wo Speicher zugewiesen wird immer, wenn Sie die dynamische Zuordnung verwenden
  4. Stellen Sie sicher, Sie verhindern Heap-Fragmentierung durch sinnvolle Stücke und Größen des Haufens Zuweisung
  5. Vermeiden Sie rekursive Funktionen vor allem diejenigen, die Verwendung von malloc (). Bessere Zuweisung eines Chunk und Führen eines Zeiger um.
  6. verwenden, free ();)
  7. Stellen Sie sicher, Ihre Typen sind nicht größer als erforderlich
  8. Schalten Sie Compiler-Optimierungen

Es wird mehr.

für real low Fußabdruck betrachten Assembly direkt zu tun.

Wir alle wissen, dass Hallo Welt in C oder C ++ 20kb ist + (wegen aller Standardbibliotheken, die verlinkt wird). In Montage ist dieser Aufwand weg. Wie in den Kommentaren darauf hingewiesen kann man die Standardbibliotheken einiges reduzieren. Dennoch bleibt die Tatsache, dass die Codedichte Sie erhalten können, wenn Montage Codierung viel höher als ein Compiler ist, wird von einer höheren Sprache zu erzeugen. Also für Code, in dem jedes Byte Angelegenheiten, verwenden Montage.

Auch wenn auf Geräte mit weniger leistungsfähigen Prozessor Programmierung, die Programmierung in Assembler-Sprache könnte Ihre einzige Möglichkeit, zu tun, um das Programm schnell genug machen sie Realtime genug zu sein, um (zum Beispiel) Steuergeräte

Wenn mit solchen Einschränkungen konfrontiert ist, ist es ratsam, auf vorbelegt Speicher , um zu garantieren, dass das System unter Last arbeiten. Ein Entwurfsmuster wie „Objekt-Pooling“ kann sich auf gemeinsame Nutzung von Ressourcen innerhalb des Systems verwendet werden.

C Sprache ermöglicht tight Ressource (das heißt Speicher & Rechenzyklen) -Steuerung. Es sollte stark berücksichtigt werden.

Vermeiden Sie Rekursion , wie es ist einfach zu missbrauchen und in Stapelüberlaufbedingungen führen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top