Sistemas & Desarrollo

encontrados: 6, tiempo total: 0.010 segundos rss2
4 meneos
93 clics

Sift4: superrápido y preciso algoritmo para calcular la distancia entre cadenas de texto [ENG]

Sift4 es la cuarta versión de un nuevo algoritmo de cálculo de distancias entre cadenas de texto (similar al algoritmo Levenstein) pero superrápido, preciso y con complejidad O(n). Actualmente está implementado en Javascript pero la idea es implementarlo en más lenguajes así como publicarlo en plataformas como GitHub.
2 meneos
53 clics

Cómo compara cadenas la JVM con instrucciones x86 de las que nunca has oído hablar [ENG]

Probablemente todos hemos visto la implementación de la función de comparación de cadenas de texto en Java. Esta compara carácter a carácter hasta que hay alguno diferente como máximo hasta la longitud de la cadena más corta y, en caso de que todos sean iguales hasta dicha longitud, devuelve la diferencia de las longitudes. Pero, ¿sabías que hay una segunda implementación que usa ensamblador de x86?
3 meneos
48 clics

Validando cadenas UTF-8 usando tan poco como 0,7 ciclos por byte [ENG]

La mayoría de las cadenas que se encuentran en Internet están codificadas usando un formato unicode particular llamado UTF-8. Sin embargo, no todas las cadenas de bytes son UTF-8 válidas. Las reglas sobre lo que constituye una cadena UTF-8 válida son un tanto arcanas. Sin embargo, parece importante validar rápidamente estas cadenas antes de consumirlas.
14 meneos
169 clics
Cómo implementar cadenas de caracteres [ENG]

Cómo implementar cadenas de caracteres [ENG]

El lenguaje de programación C define una cadena como 'una secuencia contigua de caracteres terminada por e incluyendo el primer carácter nulo'. Como el carácter '' marca el final, a menudo lo llamamos terminación cero o nula. En los programas en C esto significa que una cadena es char* o char[n]. Históricamente esta representación es anterior a C y parece provenir de los ensambladores PDP-11. La principal ventaja de esta representación es la eficiencia del espacio, además de otros trucos como dividir una cadena larga en varias insertando nulos. Sin embargo, otros lenguajes de programación a menudo usan otras representaciones. ¿Cuáles más son posibles?
3 meneos
41 clics

Las cadenas literales generan rangos incorrectos en C++ [ENG]

C++20 vendrá con lo que llamamos la biblioteca de rangos, aunque la interfaz de rangos ha sido compatible desde C++11 en el bucle `for`. El bucle `for` que usa rangos puede detectar cualquier cosa que sea un rango y trabajar con él. En particular, puede funcionar con cadenas literales. El problema en este caso es que las cadenas literales tienen un carácter NULL al final y eso puede llevar a errores ya que hay un elemento que no se ve fácilmente visible en el rango formado por la cadena. Para solucionarlo existen varios métodos.
3 meneos
48 clics

Convirtiendo cien millones de enteros a cadena de caracteres por segundo [ENG]  

Hace casi 7 años escribí un artículo comparando el rendimiento de diferentes métodos para convertir un entero en una cadena de caracteres. Muchas cosas han cambiado desde entonces, así que he decidido escribir otro artículo de seguimiento para ver cuánto se ha avanzado en los últimos años.

menéame