Qualquer que seja a tecnologia de virtualização que estou usando
Lembra-se dos dias em que sistemas com mais de 512 MB de RAM eram considerados de ponta? Passo meus dias escrevendo código para o anterior.
Eu trabalho principalmente em programas de baixo nível que são executados no domínio privilegiado em um ambiente Xen. Nosso limite máximo para o domínio privilegiado é de 512 MB, deixando o restante da RAM livre para uso de nossos clientes. Também é típico limitarmos o domínio privilegiado a apenas um núcleo da CPU.
Então, aqui estou eu, escrevendo código que será executado em um novo servidor de US $ 6k, e cada programa deve funcionar (idealmente) dentro de um limite de 100kb alocado ou evitar completamente a alocação dinâmica de memória.
Conciso, eu otimizo para:
- Pegada na memória
- Classifica (onde a maior parte do meu código passa a maior parte do tempo)
Eu também tenho que ser extremamente diligente quando se trata de tempo gasto esperando por bloqueios, esperando E / S ou apenas esperando em geral. Uma quantidade substancial de meu tempo é destinada a melhorar as bibliotecas de soquetes não bloqueantes existentes e a procurar métodos mais práticos de programação sem bloqueio.
Todos os dias, acho um pouco irônico escrever código como 15 anos atrás, em sistemas comprados no mês passado, devido a avanços na tecnologia.
Isso também é típico para quem trabalha em plataformas embarcadas, embora muitos deles tenham pelo menos 1 GB à sua disposição. Como Jason salienta, também é típico ao escrever programas para serem executados em dispositivos móveis. A lista continua: quiosques, thin clients, molduras, etc.
Estou começando a pensar que as restrições de hardware realmente separam os programadores das pessoas que podem fazer algo funcionar sem se importar com o que realmente consome. Preocupo-me (vote-me se for necessário) que linguagens que abstraem completamente o tipo e a memória verificando o conjunto coletivo de senso comum que (costumava ser) compartilhado entre programadores de várias disciplinas.