WRT punto flotante:
en un G1, agregar dos flotadores requiere aproximadamente 400ns. agregar dos ints toma aproximadamente 250ns.
en un nexus one corriendo eclair (pre-JIT), ambas operaciones toman alrededor de 120ns. (las entradas son un poco más rápidas, pero tendría que ser microenfoque para notar). Hay una pequeña diferencia porcentual entre int y long, y flotación y doble, pero básicamente si puede pagar una, probablemente puede permitirse la otra.
otros dispositivos actuales estarán en algún lugar entre estos extremos. (otras operaciones también serán diferentes. La multiplicación es más costosa que la suma/resta, y la división es más cara todavía. No hay dispositivos actuales que tengan una división entera de hardware)
pero no se obsesione con nada de esto hasta que tenga un problema . lo más probable es que sus problemas de rendimiento se reduzcan a una mala elección de algoritmo o estructura de datos, como siempre lo son los problemas de rendimiento de todos.
la mayor parte de la documentación de rendimiento actual (eclair) es incorrecta. comparta las cosas usted mismo, en el (los) dispositivo (s) que le interesan.
pero si realmente estabas preguntando "¿qué debería una/servidor java programador de escritorio tener en cuenta?", Me gustaría sugerir: la asignación innecesaria. no tiene un núcleo adicional para hacer su GC como lo hace en el escritorio/servidor, y no tiene gigabytes de montón como lo hace en el escritorio/servidor. Si estás haciendo GC, no estás haciendo un trabajo real, y tu montón será como máximo de 24Mib en dispositivos actuales. por lo que es posible que desee evitar la asignación innecesaria en los bucles internos.
A pesar de que estoy de acuerdo con la no optimización temprana, etc., este no es el problema aquí. Si, por ejemplo, todas las operaciones flotantes toman 1ms y todas las operaciones int 1ns, el diseño de todas las estructuras de datos para el punto fijo desde el principio es simplemente de sentido común. – Viktor
Si tiene un presupuesto de 50ms para hacer el trabajo, si toma 1ms o 1ns no importa. Haz que el código funcione y luego preocúpate por los detalles. La conversión entre puntos fijos y flotantes es un día o dos de trabajo en el mejor de los casos. Haz que tu aplicación se ejecute con algoritmos eficientes y luego si necesitas hacer estas optimizaciones. En casi todas las aplicaciones que he analizado, las grandes ganancias nunca están en micro optimizaciones. Se aseguran de que no estés haciendo cosas estúpidas (dibujando objetos 2x, clasificando cuando no es necesario, ...). Hay casos en que la microoptimización es correcta. Lo sabrá cuando ocurra – hacken