Wednesday, January 21, 2004
Salah satu form yg saya baru siap buat, memakan masa lebih kurang 3.5 saat utk papar, bagi satu rekod yg agak banyak child nye. Masa 3.5 saat ni banyak disebabkan db lookup yg dilakukan lebih dpd 3 utk setiap child. Salah satu cara ialah optimise kan sql. Satu cara lain ialah bubuh cache guna aop.
Setelah terkial2 buat seketika, akhirnya berjaya dan faham bagaimana nak bubuh caching kat setiap DM (data manager) yg code gen saya generate. Selalunya saya guna poincut execute, tapi kali ini, utk tidak merubah kelakuan DM, saya guna pointcut call utk bubuh cache tersebut. Sebab tak guna execute ialah krn execute menyebabkan fungsi cache di embed kan kedlm DM tersebut. Masalahnya, DM ni teramat la banyaknya class yg menggunakannya dan mungkin ada class yg tak mahu ia dicache atau mahu ia dicache tapi pada tahap masa utk flush yg berbeza. Utk membolehkan ini berlaku, call adalah lebih sesuai. Kita perlu hasilkan aspek yg berbeza utk setiap class yg nak kelakuan atau setting cachenya yg berbeza.
Konsep ini adalah lebih luas, tak semestinya dgn DM yg code gen saya hasilkan je. Design DM ni adalah satu design yg cuba capai high cohesion dan seberapa low coupling yg boleh. Disebabkan itu, tiada class lain yg kawal db access utk class nye selain ia. Akibatnya, semua class lain yg nak guna, perlu guna dgn DMnya.
Kesimpulan, mana2 class yg punya ciri2 yg sewaktu dgnnya, bolehlah juga menggunakan cara aop ini. Kiranya, pembelajaran tentang bila nak guna call dan bila nak guna execute. Oh, ya. Bila dah bubuh aspect cache, form utk rekod yg sebelumnya 3.5 saat, sekarang ambil masa 0.5 saat.
Setelah terkial2 buat seketika, akhirnya berjaya dan faham bagaimana nak bubuh caching kat setiap DM (data manager) yg code gen saya generate. Selalunya saya guna poincut execute, tapi kali ini, utk tidak merubah kelakuan DM, saya guna pointcut call utk bubuh cache tersebut. Sebab tak guna execute ialah krn execute menyebabkan fungsi cache di embed kan kedlm DM tersebut. Masalahnya, DM ni teramat la banyaknya class yg menggunakannya dan mungkin ada class yg tak mahu ia dicache atau mahu ia dicache tapi pada tahap masa utk flush yg berbeza. Utk membolehkan ini berlaku, call adalah lebih sesuai. Kita perlu hasilkan aspek yg berbeza utk setiap class yg nak kelakuan atau setting cachenya yg berbeza.
Konsep ini adalah lebih luas, tak semestinya dgn DM yg code gen saya hasilkan je. Design DM ni adalah satu design yg cuba capai high cohesion dan seberapa low coupling yg boleh. Disebabkan itu, tiada class lain yg kawal db access utk class nye selain ia. Akibatnya, semua class lain yg nak guna, perlu guna dgn DMnya.
Kesimpulan, mana2 class yg punya ciri2 yg sewaktu dgnnya, bolehlah juga menggunakan cara aop ini. Kiranya, pembelajaran tentang bila nak guna call dan bila nak guna execute. Oh, ya. Bila dah bubuh aspect cache, form utk rekod yg sebelumnya 3.5 saat, sekarang ambil masa 0.5 saat.
Comments:
Post a Comment