Bonjour à tous et à toutes !
Voilà mon problème :
Je travaille sur un Sub générique qui est chargé de copier une série d'éléments contigus d'un tableau dans un autre. Le but est de m'en servir pour implémenter des algorithmes de tri efficaces.
La signature de ce sub est :
Source : tableau d'où proviennent les éléments ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub Copier(Of T)( _ Source as T(), IndexSource as Integer, _ Cible as T(), IndexCible as Integer, _ Longueur as Integer)
IndexSource : index du premier élément à copier ;
Cible : tableau où recopier les éléments ;
IndexCible : indice où recopier le premier élément ;
Longueur : nombre d'éléments à copier.
J'ai pensé à plusieurs méthodes :
- Effectuer une copie élément par élément, avec une boucle For ;
- Utiliser la méthode Array.Sort(), qui répond à mes attentes ;
- Effectuer une copie grâce à la classe System.Runtime.InteropServices.Marshal.
J'ai testé les deux premières méthodes, avec une rapidité d'exécution supérieure pour la deuxième.
Ma priorité est la rapidité (et pas la simplicité du code). De plus, ce Sub étant destiné à être appelé de très nombreuses fois, un gain de temps minime serait déjà le bienvenu ! Je pense donc que la troisième méthode serait encore meilleure.
Mais la méthode Copy() de la classe Marshal permet de copier un tableau à l'adresse spécifiée par un pointeur, ou les informations trouvées à l'adresse d'un pointeur dans un tableau, mais pas un tableau dans un autre tableau.
Quelqu'un a-t-il une idée me permettant d'utiliser, dans ma situation, les performances de la fonction Copy() ?
Merci à vous !
Partager