Apêndice A. Dicas para Desenvolvedores
- usando opções:
- ativamentos de CPU desnecessárias e o uso ineficiente do mesmo. Se você precisa realizar um ativamento, faça tudo de uma só vez (vá direto para modo ocioso) e o mais rápido possível.
- usasndo o
[f]sync()
sem necessidade. - polling ativo desnecessário ou uso de timeouts regulares e curtos. (Reativar para eventos).
- o uso ineficiente do ativamento (wake-ups)
- acesso ineficiente ao disco. Use buffers grandes para evitar acesso ao disco frequente. Grave um bloco grande por vez.
- Uso ineficiente de timers. Timers de grupo nos aplicativos (ou até nos sistemas) se possível.
- E/S excessiva, consumo de energia, ou uso de memória (incluindo vazamento de memória)
- realizando computação desnecessária.
A.1. Usando Opções
Python usa o Global Lock Interpreter[1], portanto o uso de opções é lucrável somente para operações de E/S maiores. Unladen-swallow [2] é uma implementação mais rápida do Python com o qual você deve ser capaz de otimizar seu código.
As opções do Perl foram criadas primeiramente para aplicativos que são executados em sistemas sem divisão (tal como sistemas com sistemas operacionais de 32-bits Windows). Nas opções do Perl, os dados são copiados para cada opção (Copiar na Gravação). Os dados não não compartilhados por padrão pois os usuários deveria ser capazes de definir o nível de dados compartilhados. Para compartilhamento de dados, o módulo threads::shared deve ser incluído. No entanto, os dados não devem ser só copiados (Copiar na Gravação), mas o módulo também cria variáveis ligadas para os dados, o qual leva ainda mais tempo e é mais lento. [3]
As opções C compartilham da mesma memória, cada opção possui sua própria pilha e o kernel não precisa criar novos descritores de arquivo e alocar espaço de memória novo. O C podem realmente usar o suporte para mais CPUs por opções. Portanto, para maximizar o desempenho de suas opções, use uma linguagem de baixo nível como o C ou C++. Se você usar uma linguage de script, considere utilizar um C binding. Use donos de perfis para identificar o pouco desempenho de partes de seu código.[4]