Pontos a serem considerados ao projetar ou codificar para entregas de pegada menores

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Publique os pontos que se deve ter em mente ao projetar ou codificar para entregas de pegada menor para sistemas incorporados.

Não estou fornecendo detalhes do compilador ou da plataforma, pois quero informações genéricas. Porém, qualquer informação específica sobre o sistema operacional baseada em Linux também é bem -vinda.

Foi útil?

Solução

Depende de quão baixo você deseja obter. Atualmente, estou codificando para impressoras fiscais e não há sistema operacional, e a regra principal não é alocação de memória dinâmica. O engraçado é que eu ainda convenci a tripulação a codificar C ++ totalmente moderno;).

Na verdade, existem algumas regras em que decidimos:

  • Sem alocação dinâmica
  • Portanto, sem stl
  • Sem manuseio de exceção (razões óbvias)

Outras dicas

Não há um resposta geral, apenas aqueles específicos para idioma/plataforma ... mas

Pequena pegada de memória ...

  1. Não use java, c#/mono, php, perl, python ou qualquer coisa com coleta de lixo
  2. Obtenha como perto do metal como viável, Use c
  3. Faça muito perfil para ver onde a memória está sendo alocada, se você estiver usando alocação dinâmica
  4. Certifique -se de você Evite fragmentação por heap alocando pedaços e tamanhos sensíveis da pilha
  5. Evitar funções recursivas Especialmente aqueles que usam Malloc (). Melhor alocar um pedaço e passar um ponteiro por aí.
  6. use free ();)
  7. Verifique se seus tipos não são maiores do que o necessário
  8. Ligue otimizações do compilador

Vai ter mais.

Para uma pegada baixa, considere fazer a montagem diretamente.

Todos sabemos que o Hello World em C ou C ++ é de 20kb+(devido a todas as bibliotecas padrão que são vinculadas). Na montagem, essa sobrecarga se foi. Como apontado nos comentários, pode -se reduzir bastante as bibliotecas padrão. No entanto, permanece o fato de que a densidade do código que você pode obter quando a montagem de codificação é muito maior do que um compilador gerará a partir de um idioma mais alto. Portanto, para o código em que todos os bytes são importantes, use a montagem.

Além disso, quando a programação em dispositivos com processadores menos capazes, a programação na linguagem de montagem pode ser sua única maneira de fazer o programa rápido o suficiente para que seja em tempo real o suficiente para (por exemplo) de máquinas de controle

Quando confrontado com essas restrições, é aconselhável Memória pré-alocada Para garantir que o sistema funcione sob carga. Um padrão de design como "pool de objetos" pode ser usado para compartilhar recursos dentro do sistema.

o C O idioma permite o controle de recursos apertados (por exemplo, ciclos de computação e ciclos de computação). Deve ser fortemente considerado.

Evitar recursão pois é fácil abusar e pode resultar em condições de transbordamento de pilha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top