Nous avons utilisé les Fourmis Profiler Pro en logiciel de Porte Rouge dans notre projet. Cela fonctionne vraiment bien pour tous .NET de la langue en fonction des applications.
Nous avons constaté que les .NET Garbage Collector est très "safe" dans son le nettoyage des objets en mémoire (comme il faut). Il serait de garder les objets autour juste parce que nous avons peut - être l'utiliser dans le futur. Cela signifiait que nous devions être plus prudent sur le nombre d'objets que nous avons gonflé dans la mémoire. En fin de compte, nous avons converti l'ensemble de nos objets de données de plus de à un "gonfler à la demande" (juste avant un champ est demandé) afin de réduire la surcharge de la mémoire et améliorer les performances.
EDIT: Voici une explication plus détaillée de ce que je veux dire par "gonfler à la demande." Dans notre modèle d'objet de notre base de données nous utilisons les Propriétés d'un objet parent pour exposer l'objet enfant(s). Par exemple, si nous avons eu quelques record qui faisait référence à un autre "détail" ou "recherche" enregistrement sur un un-à-un, nous permettrait de structure comme ceci:
class ParentObject
Private mRelatedObject as New CRelatedObject
public Readonly property RelatedObject() as CRelatedObject
get
mRelatedObject.getWithID(RelatedObjectID)
return mRelatedObject
end get
end property
End class
Nous avons constaté que le système ci-dessus créé certains réel de la mémoire et des problèmes de performances lorsque il y avait un grand nombre d'enregistrements dans la mémoire. Nous avons donc opté pour un système où les objets étaient gonflés que lorsqu'elles ont été demandées, et de la base de données des appels ont été effectués uniquement lorsque c'est nécessaire:
class ParentObject
Private mRelatedObject as CRelatedObject
Public ReadOnly Property RelatedObject() as CRelatedObject
Get
If mRelatedObject is Nothing
mRelatedObject = New CRelatedObject
End If
If mRelatedObject.isEmptyObject
mRelatedObject.getWithID(RelatedObjectID)
End If
return mRelatedObject
end get
end Property
end class
Ceci s'est avéré être beaucoup plus efficace parce que les objets étaient conservés hors de la mémoire jusqu'à ce qu'ils ont besoin (la méthode Get a été consulté). Il a fourni un très gros gain de performances dans la limitation de la base de données de frappe et un énorme gain d'espace mémoire.