Pregunta bastante simple, pero esta proviene de una persona C/C++ que se adentra en las complejidades de Java.Cadena replaceAll() vs. Matcher replaceAll() (Diferencias de rendimiento)
Entiendo que puedo iniciar jUnit y algunas pruebas de rendimiento propias para obtener una respuesta; pero me pregunto si esto está ahí fuera.
¿Existen diferencias conocidas entre String.replaceAll() y Matcher.replaceAll() (En un objeto de Matcher creado a partir de un Regex.Pattern) en términos de rendimiento?
Además, ¿cuáles son las diferencias API de alto nivel entre ambas? (Inmutabilidad, Manejo de NULL, Manejo de cadenas vacías, haciendo café, etc.)
excepto, como se menciona a continuación, la penalización de rendimiento de la compilación del patrón. si está utilizando una expresión regular constante, compílela y péguela en una constante estática. – james
Su comentario "Por lo tanto" al final solo aplica para 1 llamada, en cuyo caso las métricas de rendimiento realmente no son relevantes. Si hay llamadas repetidas para replaceAll con la misma expresión regular, String.replaceAll es más lento que el almacenamiento en caché de un patrón compilado. –
Gracias por los buenos puntos, he editado mi respuesta. – coobird