Le CRC32 est bien pratique, et se prête à de nombreuses utilisations. Vu le faible risque de collision, il me sert même parfois à faire des clefs primaires pour avoir un certain anonymat - je reconnais que ce n'est pas très propre... mais ça peut être une solution efficace dans certains cas.
Toutefois, il faut alors faire attention aux limites de ses outils et connaître leurs travers, y compris ceux de leur implémentation.
Un exemple tout frais aujourd'hui : la fonction de groupage de l'ATIH (fg1213) me segfaulte. Je sors gdb, puis je regardant le code.
Que vois-je ? Une implémentation du CRC32 en slice par 8, mais avec des unsigned long et des unsigned long long ... dont la taille (sizeof) est bien sur architecture dépendante !!
Résultat en x64, on se prend des segfault, alors qu'il suffit de faire un peu attention et d'utiliser u_int32_t et u_int64_t si on veut absolument faire un slice par 8 ... ou alors, plutôt que de réinventer la roue, prendre une implémentation de référence qui fonctionne partout ! Ce ne sont pas les exemples qui manquent :-)
Aucun commentaire:
Enregistrer un commentaire