Tan solo unas pequeñas precisiones sobre mi algoritmo:
1- El format con los años primeros, perfecto, permite ordenar claves (Aunque esto me recuerda a lo que siempre me decía el alemán con quien colaboré sobre el cliente FTP: "¡Pero eso no estaba en las condiciones del proyecto!" y a lo que yo respondía "Sin improvisación no es divertido"...)
2- El lugar "natural" de GetKey es dentro de un módulo, de manera que sea accesible desde cualquier parte del proyecto donde se use. Por tanto la función debe devolver el valor para que sea recogido y aplicado en la clase desde donde se le llame.
2- Se declara STATIC nkey para que una vez se establezca el valor, la secuencia continue ininterrumpida a todo lo largo de la sesión del proyecto que use la función. Dicha secuencia es resetada cada 99999 claves generadas en la sesión y lo limité el offset a eso por no hacer la clave muy larga... pero visto la longitud de las claves de los otros algoritmos, pues se puede ampliar todo lo que se quiera.
En el retoque de Tincho también se declaran STATIC LastKey (útima clave generada) y sCurrKeyTkey (Control de timestamp duplicados) y se resetea el offset cada cambio de éste último. Es otra forma de hacerlo totalmente válida, por supuesto, pero de cuya utilidad no estoy muy seguro.
Respecto a los Tests propuesto por Tincho, observo que a medida que crece el array de claves se enlentece el proceso, claro. Por tanto, una vez que estamos seguros que la función getkey funciona perfectamente y no es necesaria ninguna comprobación, si cambiamos el código a ésto:
La velocidad de generación pasa de más o menos 20.000 por segundo y disminuyendo... a 1.350.000 por segundo de manera constante. Si eliminamos la necesidad de que todas las claves sean iguales de largas, es decir:
Entonces la velocidad de generación de claves únicas asciende por encima de 1.500.000 por segundo, suficiente para TercoIde, supongo
.
Adjunto un proyectito que muestra esto:
![[Imagen: rgf9KZI.png]](https://i.imgur.com/rgf9KZI.png)
Saludos
GAMBAS
1- El format con los años primeros, perfecto, permite ordenar claves (Aunque esto me recuerda a lo que siempre me decía el alemán con quien colaboré sobre el cliente FTP: "¡Pero eso no estaba en las condiciones del proyecto!" y a lo que yo respondía "Sin improvisación no es divertido"...)
2- El lugar "natural" de GetKey es dentro de un módulo, de manera que sea accesible desde cualquier parte del proyecto donde se use. Por tanto la función debe devolver el valor para que sea recogido y aplicado en la clase desde donde se le llame.
2- Se declara STATIC nkey para que una vez se establezca el valor, la secuencia continue ininterrumpida a todo lo largo de la sesión del proyecto que use la función. Dicha secuencia es resetada cada 99999 claves generadas en la sesión y lo limité el offset a eso por no hacer la clave muy larga... pero visto la longitud de las claves de los otros algoritmos, pues se puede ampliar todo lo que se quiera.
En el retoque de Tincho también se declaran STATIC LastKey (útima clave generada) y sCurrKeyTkey (Control de timestamp duplicados) y se resetea el offset cada cambio de éste último. Es otra forma de hacerlo totalmente válida, por supuesto, pero de cuya utilidad no estoy muy seguro.
Respecto a los Tests propuesto por Tincho, observo que a medida que crece el array de claves se enlentece el proceso, claro. Por tanto, una vez que estamos seguros que la función getkey funciona perfectamente y no es necesaria ninguna comprobación, si cambiamos el código a ésto:
GAMBAS
La velocidad de generación pasa de más o menos 20.000 por segundo y disminuyendo... a 1.350.000 por segundo de manera constante. Si eliminamos la necesidad de que todas las claves sean iguales de largas, es decir:
GAMBAS
Entonces la velocidad de generación de claves únicas asciende por encima de 1.500.000 por segundo, suficiente para TercoIde, supongo


Adjunto un proyectito que muestra esto:
![[Imagen: rgf9KZI.png]](https://i.imgur.com/rgf9KZI.png)
Saludos
No podemos regresar