Ao escrever algo que cria muitos (1000s) de objetos pequenos com frequência, você deve minimizá-lo para obter desempenho? Especialmente se você não souber em qual sistema ele será executado, de computadores de mesa de ponta a ponta ou até móveis. Para dispositivos móveis, ouvi dizer que a criação de muitos objetos dificulta bastante o desempenho, embora eu não saiba o quanto isso é verdade.
Eu tenho um exemplo que mostra bem essa ideia. Em um programa gráfico, digamos que exista um método usado para todos os desenhos idealmente chamados drawPixel(Point)
. Pode haver milhares de pontos criados e isso pode ser repetido com frequência, como em um jogo em que poderia ser chamado mais de 60 vezes por segundo. Como alternativa, drawPixel(int x, int y)
poderia ser usado para minimizar a criação de muitos objetos Point.
Em um design orientado a objetos, acho que usar o Point seria preferido. No entanto, o uso de tipos primitivos pode aumentar o desempenho. O ganho de desempenho pode ser insignificante na maioria dos casos, mas não tenho certeza sobre coisas como máquinas móveis ou mais antigas. Qual é o ganho de desempenho ao fazer algo assim e é algo que deve ser levado em consideração?
System.getProperty("java.version")
(ou "java.vm.version") é um ponto de partida.