ทำไมแผง MT4/MT5 ถึง “หนัก/ค้าง”:เราได้วัดสาเหตุด้วยเครื่องมือที่สร้างเอง
ผม Yohaku ผู้สร้างอินジเคเตอร์และเครื่องมือสะดวกบน MT4/MT5 มาทำสิ่งที่สร้างขึ้นมานั้นมาจากความไม่พอใจที่ปรากฏในรีวิวและคำถามของゴゴジャン
เกี่ยวกับเครื่องมือที่แสดงพาแนล ผมพบว่า “หนักเกินไป” และ “เมื่อสลับคู่สกุลเงินหรือตาเข็มเวลาแล้วค้าง” เป็นต้น ปัญหาเดียวกันเกิดขึ้นแม้ในพาแนลทดลองที่สร้างเอง ดังนั้นผมได้วัดสาเหตุและหาวิธีแก้ และยังบอกขั้นตอนทดลองด้วยการเดโมก่อนจะซื้อ
สรุปก่อน
- สาเหตุที่พาแนลทดลองที่สร้างเองทำให้หนักคือ ทุกวินาทีมีการเขียนชิ้นส่วนบนหน้าจอทั้งหมดใหม่ (เส้น, ปุ่ม, ข้อความ)
- โดยเฉพาะ MT5 บนเวอร์ชัน Mac (Wine) เมื่อมีการดำเนินการกับชิ้นส่วนแต่ละครั้ง จะมีการรอคิว ด้วยเหตุนี้ในช่วงที่หนาแน่น การแสดงหนึ่งรอบอาจใช้เวลาหลายสิบวินาที และในระยะนั้นกราฟจะไม่ตอบสนอง
- หากออกแบบให้ “เปลี่ยนเฉพาะส่วนที่เปลี่ยนแปลง” ก็จะลดภาระลงเกือบทั้งหมดตามการวัดจากการทดลองส่วนตัว
เงื่อนไขที่วัด
- 8 ตุลาคม 2026, MT5 บน Mac รุ่นชิพ Apple
- กราฟ EURUSD 5 นาที ประกอบด้วยพาแนลที่สร้างเองและ Fractals มาตรฐานของ MT พร้อมกัน
- ได้สร้างเวอร์ชันที่บันทึกเวลาการประมวลผลต่อรอบ เพื่อเปรียบเทียบระหว่างการสร้างเดิมกับการสร้างใหม่
ผลลัพธ์
การออกแบบเดิม (เขียนชิ้นส่วนทั้งหมดทุกวินาที)
- เวลาต่อการแสดงหนึ่งรอบโดยเฉลี่ย 67–94 มิลลิวินาที สูงสุด 153–188 มิลลิวินาที หนึ่งการแสดงมีการดำเนินการกับชิ้นส่วนประมาณ 200 ครั้ง
- เมื่อกราฟหนาแน่น บางครั้งใช้เวลา 28–69 วินาทีต่อหนึ่งการแสดง ในช่วงนั้นกราฟไม่สามารถตอบสนองต่อการสอบถามภายนอกได้
การออกแบบใหม่ (เปลี่ยนเฉพาะส่วนที่เปลี่ยนแปลง)
- วินาทีที่ไม่มีการเปลี่ยนแปลง จะเขียน 0 ครั้ง เฉลี่ย 0.03 มิลลิวินาที สูงสุด 0.18 มิลลิวินาที
- เฉพาะเมื่อมีบรรทัดใหม่ที่แสดงผลเปลี่ยนแปลง จะเขียนใหม่ประมาณ 6–10 ครั้ง
- รูปลักษณ์ยังคงเหมือนเดิมกับแบบเดิม
ทำไมถึงหนัก
บน MT4/MT5 ชีวิตชิ้นส่วนของพาแนลอย่างเส้น, ปุ่ม, ข้อความ เป็น “วัตถุ” การสร้าง/แก้ไขวัตถุเหล่านี้บน Mac (Wine ซึ่งเป็นระบบให้รัน Windows บน Mac) จะมีการรอคิวกับกราฟหนึ่งรอบทุกครั้ง
หากสร้างซ้ำทั้งหมดทุกวินาที (ประมาณ 200 ครั้ง) คิวรอจะทบสะสม เมื่อกราฟหนาแน่นการรอคิวหนึ่งรอบจะยาวขึ้น และการแสดงทั้งหมดอาจใช้เวลาเป็นสิบวินาที
แนวทางแก้คือ จำตำแหน่งตัวอักษร สี และตำแหน่งของแต่ละชิ้นส่วนก่อน แล้วเปลี่ยนแค่ส่วนที่เปลี่ยนแปลงเท่านั้น วินาทีที่ไม่มีการเปลี่ยนแปลงจะไม่เขียนอะไรเลย ด้วยวิธีนี้ ภาระงานทั่วไปจะลดลงเกือบทั้งหมด