Kami telah menggunakan Ants Profiler Pro oleh perangkat lunak Red Gate di proyek kami. Ini bekerja sangat baik untuk semua aplikasi berbasis bahasa .NET.
Kami menemukan bahwa .NET Garbage Collector sangat "aman" dalam membersihkan objek dalam memori (sebagaimana mestinya). Itu akan menjaga benda-benda di sekitar hanya karena kita mungkin menggunakannya di masa depan. Ini berarti kami harus lebih berhati-hati dengan jumlah objek yang kami gembungkan dalam memori. Pada akhirnya, kami mengubah semua objek data kami menjadi "mengembang saat diminta" (tepat sebelum bidang diminta) untuk mengurangi overhead memori dan meningkatkan kinerja.
EDIT: Berikut adalah penjelasan lebih lanjut tentang apa yang saya maksud dengan "mengembang pada permintaan." Dalam model objek kami dari basis data kami, kami menggunakan properti dari objek induk untuk mengekspos objek anak. Sebagai contoh jika kita memiliki beberapa catatan yang mereferensikan catatan "detail" atau "pencarian" lainnya pada basis satu-ke-satu, kita akan menyusunnya seperti ini:
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
Kami menemukan bahwa sistem di atas menciptakan beberapa masalah memori dan kinerja nyata ketika ada banyak catatan dalam memori. Jadi kami beralih ke sistem di mana objek digembungkan hanya ketika diminta, dan panggilan basis data dilakukan hanya jika diperlukan:
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
Ini ternyata jauh lebih efisien karena benda-benda disimpan keluar dari memori sampai mereka diperlukan (metode Dapatkan diakses). Ini memberikan peningkatan kinerja yang sangat besar dalam membatasi hit basis data dan keuntungan besar pada ruang memori.