natt_han’s Weblog

dataGridView Performance

Posted by: dragonquestx on: พฤษภาคม 7, 2008

งานที่ทำอยุ่ตอนนี้ ต้องเอา dataGridView มาใช้ จากที่ตอนแรก ทดสอบด้วยประมาณ 100 row ทำการเพิ่ม column ขึ้นมาเอง ละใส่ค่าลงไป ก็ไม่มีปัญหาอะไร

ทีนี้ลองเปลี่ยนมา 100000 row โอ้วพระเจ้า add ข้อมุล 3 ช่อง ใช้เวลาไป 10 วิ นี่มันอะไรกัน dataGridView ไม่เหมาะกับข้อมูลเยอะๆ งั้นรึ แต่เวลาอ่านข้อมูล ก็ใช้เวลาแค่ .1 ms เท่านั้น

และแล้วเราก็พบว่าสาเหตุที่ช้าเกิดจาก การตั้งค่า autoresize ซึ่งตอนนั้น set ไว้เป็น allcell 

ซึ่งการทำงานของ autoresize เมื่อค่ามีการเปลี่ยนแปลง มันก็ทำการวัดขนาดของข้อมูลทั้งหมด เพื่อมาหาว่าจะต้อง set size เป็นเท่าไหร่ ดังนั้น เมื่อมีการ set ข้อมูล ทีนึง มันก็ต้องไปทำการอ่านข้อมูลทั้ง 100000 row ทุกครั้ง นั่นเองที่ทำให้มันซัดไป 10 วิ ก็แก้ โดนการปิด autoresize หรือ ตั้งเป็น display cell ก็จะทำการวัดเฉพาะข้อมุลแถวที่กำลังแสดงผลอยู่ในหน้าจอเท่านั้น

ป้ายกำกับ: , , ,

ใส่ความเห็น


  • ไม่มี
  • Mr WordPress: Hi, this is a comment.To delete a comment, just log in, and view the posts' comments, there you will have the option to edit or delete them.

หมวดหมู่