Le présent code est publié sous licence libre (GNU Public icense).
Toute diffusion et utilisation de ce code est envouragée. Pour toute utilisation commerciale, incluant la publication dans une revue,
veuillez nous prévenir au préalable.
La dernière version en date est localisée à l'URL http://ilay.org/yann/articles/toolbox/.
Toute remarque, sugestion ou correction est bienvenue et peut être adressée à Yann LANGLAIS.
Cette boîte à outils constitue une bibliothèque dynamique (libtbx.so) compilable avec un compilateur supportant les extensions C99.
Il peut être compilé avec gcc version 3.x.
Elle est constituée par les modules suivants:
Composant | Description | Domaine |
---|---|---|
atree/atr | arbres ascii pour l'indexation et le parsing exact | indexation, parsing exact |
hash | Index avec contrainte d'unicité. | indexation |
index | Index sans contraine d'unicité | indexation |
list | Listes doublement chaînées génériques | structuration |
btree | arbres binaires, structure triée à partir d'une fonction de tri | structuration, indexation, tri |
tree | Composant de base pour la gestion des arbres | structuration |
graph | Composant de base pour l'implément de graphe dont les éléments sont indexés | structuration |
storage | Stockage mémoire dynamique de tableaux d'éléments identiques (pas de désallocation par élément) | allocation |
dyna | Stockage mémoire dynamique de tableaux d'éléments identiques (avec désallocation par élément) | allocation |
mdbg | bibliothèque aidant au débug mémoire (verification de la libération de la mémoire et des débordements) | débugger mémoire |
map | Composant pour la gestion des i/o via nmap en remplacement de open/close | mapped i/o | shmem | Composant pour l'utilisation de segments de mémoire partagée | IPC : mémoire partagée | dlspy | bibliothèque de débug des appels aux fonction de la libdl.so | débugger mémoire |
srv | Composant serveur pour le développement client/serveur à partir des sockets | Client/Serveur | cli | Composant client pour le développement client/serveur à partir des sockets | Client/Serveur | error | Aide à l'affichage des messages d'erreur (niveau de log, fichier de sortie, localisation du fichier source et de la fonction en erreur, timestamp, ...) | Mécanisme de logging |
coverage | primitives permettant de poser des traces et de calculer le temps d'exécution du code | Aide au test et débug |
option | Code permettant la lecture de fichiers de configuration | |
str | Composant de gestion des chaines de caractères | strings C | rexp | Encapsulation des fonctions de recherche/remplacement de texte à partir d'expression régulières | Encapsulation de regexp |
Les modules atree, hash, list, btree et storage sont particulièrement intéressant pour le traitement en mémoire de données
en provenance d'un SGBD.
Les modules memory et coverage sont intéressant lors des phases de débug et d'optimisation du code.
Comparaison des différents mécanismes d'indexation :
create | store | find | destroy | |
---|---|---|---|---|
atree | 0.000005 | 0.010653 | 1.807883 | 0.012983 |
atr | 0.000001 | 0.004158 | 2.261875 | 0.004273 |
index | 0.000001 | 0.005177 | 2.674241 | 0.000001 |
hash | 0.000041 | 0.001042 | 2.826498 | 0.000700 |
btree | 0.000004 | 0.001261 | 3.972993 | 0.000433 |