Generando Strings con ceros en Java


Estuvimos trabajando en mejorar la velocidad de una función llamada getZeros:
Versión Original hecha en java 1.4 utilizaba un StringBuffer para generar los ceros:


La función corre en Java 1.6 (ahora), por lo que ahora usamos un StringBuilder (versión no sincronizada de StringBuffer), luego usamos el constructor que define el tamaño inicial cuando creamos la instancia, esto es para evitar resizes innecesarios de la represntación interna del StringBuilder, agregamos los ceros con caracteres '0' en vez de Strings "0":


Después me puse a pensar y me di cuenta que no necesito un StringBuilder siquiera ya que se cuantos caracteres voy a necesitar, así que me conviene usar directamente un arreglo o array de char(s) para evitar instanciar un objeto que es un poco mas pesado que instanciar un arreglo:
Finalmente estuve pensando en hacer un estudio estadístico del uso de la función y usar una cache con los resultados mas usados para bajar el orden de complejidad de O(n) a O(1) (siendo n la cantidad de ceros que quiero generar) para los casos mas comunes, manteniendo el método su orden de complejidad O(n) en el peor caso.

¡Se aceptan sugerencias para mejorar!

Comments