[xxhash] Creado cuckooget para guardar sitios localmente a ultra alta velocidad [tabla hash de cuckoo]

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hola, soy un inútil.
Lo creé porque no existía nada con las características que quería para crear un espejo local de un sitio.
httpithub.cturackooget

Introducción

La función de duplicación de este sitio está fuertemente influenciada por xavier roche, el creador de HTTrack.
[xavier roche’s homework](httplog.httrack.c
Mientras leía su blog, vi el siguiente artículo:
[Coucal, Cuckoo-hashing-based hashtable with stash area C library](httplog.httrack.c/uc
En cuanto a las tablas hash de cuckoo, se proporciona una explicación clara en las diapositivas de Kumagi-san, a quien todos aprecian, tituladas "El mundo de las tablas hash que no conoces".

Se me ocurrió una idea. Esta es la parte donde, en caso de colisión, "expulsa otros elementos como el hábito de un cuco". Pensé que esta característica podría aprovecharse cuando existe la posibilidad de duplicación con una lista enorme.
ahewfewjjwefawefj

Cálculo de hash

Como no se requería seguridad, encontré el reciente xxhash y lo incorporé.
Dado que se necesitan dos tipos para las tablas hash de cuckoo, se generan con xxh32 y xxhash64.
Además, como Iigau-kun me hizo notar, había fijado el límite superior del tamaño de la tabla, así que hice posible redimensionar el tamaño de la tabla con _resize.

Ponderación única

La prioridad de guardar las URL de destino cambia al describir secuencialmente las cadenas incluidas en la URL con la opción -w --weight.
Por ejemplo, esto hizo posible configurarlo de forma flexible sin depender de la especificación jerárquica.

¿El más rápido?

No escribiré mucho al respecto, ya que podría recibir críticas, pero el número de conexiones predeterminado es 50.
Pero, sinceramente, es rápido incluso sin llegar a 50.
La razón por la que la velocidad es importante es que estaba guardando el tablero UNIX de 5ch alrededor de 2022 o 2023. Era aproximadamente 30 GB.
En ese momento, me sorprendió que los hilos y publicaciones históricas fueran arrastrados a los registros antiguos debido a demasiadas tormentas de scripts.
Por lo tanto, para mí, la velocidad era algo que no podía dejar de priorizar.

Lo que queda...

Me gustaría poder crear un archivo de caché (lo intenté una vez y fallé) y poder reanudar el procesamiento después de una interrupción, y quizás implementar una caché LRU...
He fallado de varias maneras, así que me gustaría incorporarlo de alguna forma.
Eso es todo. Espero contar con su apoyo de nuevo.

Y... estaba tan cansado que me quedé dormido mirando el ordenador...