Closed mx-psi closed 9 years ago
He generado dos programas que ejecutan un bucle de 10^9 iteraciones. El primero asigna a un bool si el bucle está en la última iteración, y el segundo comprueba si está en la última iteración y en tal caso se lo asigna.
Usando time con ambos programas he llegado a la conclusión de que es más rápido comprobar el fin de cadena que sobreescribir. Los tiempos en segundos en tres ejecuciones del programa que sobreescribe han sido 3.148 3.058 3.141, y el programa que comprueba ha tenido por tiempos 2.972 3.011 3.019
Por otro lado, la sobreescritura, aunque es más compacta, es más oscura. Por ambas razones, escogeremos la comprobación en lugar de la sobreescritura. Dado que en este momento el programa involucrado está hecho con comprobación en los dos sitios en los que se opera hasta fin de cadena, se quedan como están.
He pensado también en ahorrarme la variable fin_texto
comprobando directamente texto[byte] == '\0'
o texto[byte-1] == '\0'
, según el caso. Acortaría el código y ahorraría una variable, pero, además de ser una solución también oscura, requeriría comprobar una componente inexistente en la primera iteración (o hacer alguna virguería en el código para evitar eso). Por ello, esta opción también ha sido descartada.
Decidir entre:
y: