Frédéric Mélantois
Manipulation d'images en C#, vers la performance
Nous chercherons à augmenter la performance de nos traitements via quelques petites « recettes »
Par Frédéric Mélantois publié le 01/02/2007 à 10:11, lu 8081 fois, 5 pages
 1 | Introduction
Dans le précédent article « Manipulation d'images en VB.NET et en C# », nous avions passé en revue différents formats d'images pour expliquer comment accéder de manière rapide aux données de l'image. Les méthodes d'accès diffèrent selon que l'on utilise C# ou VB.NET. La « recette » VB.NET peut être appliquée avec C# dans le cas où nous devons réaliser de nombreux traitements sur une même image sans effectuer d'affichages intermédiaires. Pour cela, on délocalise les données de l'image vers un tableau situé sur le tas managé via la méthode « Marshal.Copy » de l'espace de nom « System.Diagnostics ». Cette façon de procéder permet d'économiser du temps sur des opérations de « LockBits » et d'« UnLockBits » qui serait nécessaire aux traitements individuels successifs que l'on peut être amené à faire sur une image, laquelle ne serait d'ailleurs pas forcèment affichée.
Dans cette article, nous poursuivrons notre recherche de la performance, en particulier en regardant de plus près les tableaux sous .NET. En analysant parfois le code natif, nous chercherons à donner quelques pistes pour gagner encore quelques millisecondes sur le traitement des données d'une image.
Lors du précédent article, je vous avais laissé un petit problème : comment améliorer d'environ 25% le code C# permettant de convertir une image 32 bits en une image 1 bit. Nous allons donc nous servir de cet exemple pour analyser les gains de performance que l'on peut obtenir en appliquant quelques « recettes ».
 
» Démarrer une discussion
 
Discussion démarée par Frédéric Mélantois le 07/05/2007 à 11:28, 1 commentaire(s).
Discussion démarée par Frédéric Mélantois le 07/05/2007 à 11:21, 1 commentaire(s).