BrunniLe 23/08/2014 à 19:43
Disons que bien en marge de la rapidité d'un algo ou d'un autre, ou encore de memmove vs une méthode maison (pour info : memmove est très rapide et presque toujours à privilégier pour les données d'une certaine taille, en plus c'est plus lisible qu'une boucle for) le plus gros problème de performance dans ta méthode c'est l'appel à realloc.
Garde en tête que malloc et consorts sont des opérations lourdes, même sur un PC (plus de mémoire = plus de boulot pour la gérer), et que ça implique en général un syscall donc une interruption de ton programme.
En fonction de la taille usuelle de ton tableau, il vaut mieux partir avec une taille prédéfinie (par exemple 4 éléments) et doubler celle-ci lorsqu'on arrive au bout. De la même manière, lorsque plus de 50% de l'espace est inutilisé, on peut songer à diviser par deux.
En fonction des opérations que tu fais, tu peux utiliser cette approche pour ne pas avoir à déplacer les éléments suivants lorsque tu en retires un (il te suffit de le mettre à une valeur "case vide" style -1). Il te faut alors "compresser" la table lors d'une réallocation vers une taille plus petite et chercher la première "case vide" en cas d'insertion.