Blog > Octobre 2012
Sérialiser des données en C#


Dans le cadre d'un projet, j'ai dû m'intéresser à la sérialisation en C# pour mettre en place un copier/coller dans une application.
J'ai trouvé un bon document pour commencer dans ce domaine :
http://www.dotnet-france.com/Documents/Framework/La sérialisation.pdf

Le principe du copier/coller est le suivant :
Au moment du "copier", une copie des entités est stockée dans un fichier (généralement un fichier binaire). Lors du "coller", les données binaires sont lues et transposées dans des nouvelles entités.

Mesurer les performances d'une requête


Dans certains cas, il est intéressant de tester la qualité d'une requête en réalisant des mesures comme le temps d'exécution, le nombre de lecture physique, etc. Néanmoins, à la seconde exécution, il n'est plus possible d'avoir des mesures similaires, SQL Server utilisant son cache pour améliorer son temps de réponse. Toutefois, des commandes existent pour contourner ce problème.

La commande DBCC DROPCLEANBUFFERS permet de vider le cache de données de SQL Server. Néanmoins, seules les pages propres (clean buffers) sont supprimées, les pages modifiées en cache ne seront pas prises en compte. Il est donc préférable d'utiliser la commande CHECKPOINT auparavant pour s'assurer de vider le plus de pages possibles. On peut conjointement utiliser la commande DBCC FREEPROCCACHE pour vider le cache de procédure. Il sera alors possible de lancer des requêtes dans un état de la mémoire proche du démarrage de l'instance.

Les commandes SET STATISTICS TIME ON et SET STATISTICS IO ON permettent d'avoir respectivement le temps d'exécution d'une requête (temps CPU et temps réel) et le nombre d'accès à la base (logique et physique). Elles se désactivent par les commandes inverses en remplaçant ON par OFF.

Exemple d'utilisation :
CHECKPOINT
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

SET STATISTICS IO ON
SET STATISTICS TIME ON

-- Requête à mesurer

SET STATISTICS TIME OFF
SET STATISTICS IO OFF