Puntos a tener en cuenta al diseñar o codificación de entregables huella menor

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

  •  21-09-2019
  •  | 
  •  

Pregunta

Por favor, después los puntos hay que tener en cuenta al diseñar o codificación de entregables huella menor para sistemas embebidos.

No estoy dando compilador o detalles de la plataforma, ya que quiero información genérica. Sin embargo, ninguna información específica sobre Linux basada OS es también agradable.

¿Fue útil?

Solución

Depende de lo bajo que quiere conseguir. Actualmente estoy codifican para las impresoras fiscales, y no hay ningún sistema operativo, y la regla principal hay una asignación de memoria dinámica. Lo curioso es que sigo convencido de que la tripulación de código totalmente moderna C ++;).

En realidad, hay algunas reglas que llegué:

  • ninguna asignación dinámica
  • por lo tanto, no STL
  • no manejo de excepciones (razones obvias)

Otros consejos

No hay un respuesta general , únicos específicos de lenguaje / plataforma ... pero

memoria pequeña huella ...

  1. No utilice Java, C # / mono, PHP, Perl, Python o cualquier cosa con la recolección de basura
  2. Get como cerrar al metal como sea posible , Use C
  3. hacer un montón de perfiles para ver donde se está asignado de memoria, si está utilizando la asignación dinámica
  4. evitar la fragmentación del montón- mediante la asignación de trozos sensibles y tamaños de la pila
  5. Asegúrese
  6. Evitar funciones recursivas especialmente los que utilizan malloc (). Mejor asignación de una parte y pasar un puntero alrededor.
  7. utilizar free ();)
  8. Asegúrese de que sus tipos no son más grandes de lo necesario
  9. Activar optimizaciones del compilador

No será más.

de la huella real de baja considerar hacer directamente Asamblea.

Todos sabemos que el Hola Mundo en C o C ++ es 20kb + (debido a todas las bibliotecas predeterminadas, que se enlaza). En Asamblea esta sobrecarga se ha ido. Como se ha señalado en los comentarios se puede reducir las bibliotecas estándar bastante. Sin embargo, el hecho es que la densidad de código que puede llegar al codificar el montaje es mucho más alto que un compilador generará a partir de un lenguaje de alto. Así, por cada código en materia de bytes, utilizan el montaje.

también al programar en dispositivos con procesadores de menor capacidad, programación en lenguaje ensamblador podría ser su única manera de hacer que el programa sea lo suficientemente rápido como para que sea suficiente para tiempo real (por ejemplo) las máquinas de control

Cuando se enfrentan a tales limitaciones, es aconsejable pre-asignar memoria con el fin de garantizar que el sistema funcionará bajo carga. Un patrón de diseño tales como "la agrupación de objetos" se puede utilizar para compartir recursos dentro del sistema.

El lenguaje permite recurso apretado (memoria es decir, y ciclos de cálculo) de control C . Debe tenerse muy en cuenta.

Evitar recursión , ya que es fácil de abuso y puede resultar en condiciones de desbordamiento de pila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top