Bueno, lo primero será definitivamente más rápido. Resolver un problema altamente codificado y altamente específico casi siempre es mucho más rápido que pasar una solución específica a una rutina de resolución de problemas generales. En cuanto a "significativamente" más rápido, ¿por qué no lo pruebas? Ejecute ambas versiones en un bucle 10 millones de veces y use TStopwatch
(o algo más si no tiene D2010 o posterior) para medir el tiempo.
Una cosa más: la primera es definitivamente más rápida, pero también podría ser incorrecta. Si no se garantiza que length(TestString)
sea> = 2, podría tener una condición de error aquí. Si TestString
es una cadena vacía, esto generará una excepción. De lo contrario, puede o no obtener una excepción dependiendo de la configuración del compilador.
Evaluación de izquierda a derecha no se requiere para el primer método. Puede ajustarlo para filtrar primero las ocurrencias menos frecuentes. Por ejemplo, podría probar primero el signo de interrogación si fuera menos frecuente. –