Bonjour à tous,
Petite présentation du contexte : j'ai été formé et jusqu'à peu, je ne travaillait qu'exclusivement en Java Et comme vous pouvez l'imaginer, j'essaye de me mettre au C.
Je travail sur un gros projet que j'avais conçut en Java. Je ne peux vous dire sa fonction ou vous passer le code pour des raisons professionnelles, mais je peux vous dire que celui-ci avait pour but de traiter un fichier dans un format particulier pour en ressortir un résultat, et cela pouvait parfois prendre 2h de calculs sur une config' monstre.
Bref j'essaye de tout refaire en C et je me pose une question.
Je travail avec pas mal de type dans mon projet comme des listes chainées ou des HashTable. Dans ce type de structure, les données sont "stockées" avec un type void*. Prenont l'exemple des HashTable et voici le code de la structure HashTable dont je me sers, pris dans un tutoriel développez.com :
Mais du coup, quand je veux extraire ces données pour les traiter, je suis obliger de les caster dans le type d'origine. Et j'ai remarqué que dans mon code, je dois faire beaucoup de cast.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 typedef struct cell{ char *key; void *data; } cell_s; typedef struct hash{ cell_s *p_cell; int size; } hash_s;
Bref tout ce blabla pour cette question : pensez-vous que ces cast vont beaucoup influer sur les performances de mon programmes, notamment le temps d'exécution ? Et n'aurais-je pas interêt à créer des types spécialisés, du genre une HashTable devant contenir des int, une HashTable devant contenir des char*, etc ... ce qui réduirait mon nombre de cast ?
La question est peut-être stupide mais je vous remercie malgré tout d'avance de vos réponses
Partager