2010-01-20 16 views
6

¿Alguien recuerda el nombre de ese "proyecto" de código abierto que desarrolló algún buen reemplazo para String in java?Reemplazo de rendimiento para String en Java

Sé que hay uno, no puedo encontrarlo en Google y no recuerdo el nombre. (no estoy hablando de StringBuilder)

Gracias

Respuesta

7

¿Está buscando una ropes?

Una cuerda es un reemplazo de alto rendimiento para cuerdas. La estructura de datos, descrita en detalle en "Ropes: an Alternative to Strings", proporciona un rendimiento asintóticamente mejor que String y StringBuffer para modificaciones de cadenas comunes como anteponer, agregar, eliminar e insertar. Al igual que las cuerdas, las cuerdas son inmutables y, por lo tanto, son adecuadas para usar en la programación de múltiples hilos.

6

No hay mejor reemplazo de de uso general. La clase String de Java está muy bien implementada para uso general.

Hay mejores implementaciones para casos específicos que podrían que ayuda en ciertas circunstancias:

  • Ropes permiten la concatenación barata de las grandes cadenas ya que explotan una estructura de árbol compartido. Posiblemente mejor que Strings si la mayor parte del tiempo de tu CPU se usa para concatenar cadenas grandes. Ropes también contiene algunas buenas optimizaciones para grandes bloques de caracteres repetidos y similares. Sin embargo, no son particularmente eficientes para uso general.
  • javolution.text.Text es similar en concepto a las cuerdas, pero es más liviano y admite la asignación de memoria personalizada para el uso en tiempo real. Si está trabajando en tiempo real con cadenas grandes, esta puede ser la mejor opción para usted.
  • mikera.persistent.Text es mi propia implementación de texto inmutable. Muy rápido, similar en concepto a javolution.text.Text, pero tiene hashcodes precalculados, por lo que será mejor si desea utilizar cadenas grandes como hashmap o hashset. (Necesitaba esto en algún momento, por lo tanto hice mi propio ...)
  • StringBuilder es muy bueno si quieres una cadena mutable a la que vas a hacer muchos pequeños cambios.
  • char [] array es simple y bastante bueno si lo único que quieres es una cadena mutable de longitud fija, es prácticamente la más eficiente que puedes hacer en la JVM. Vale la pena considerar si está tratando de implementar algún algoritmo de cadena de bajo nivel personalizado. La mayoría de las otras implementaciones de cadenas usan esto debajo del capó .....
+0

Mejor/más completa que la aceptada. – javadba