ระบบการจัดกิจกรรมนั้นน่าทึ่งมากพวกเขาสร้างรหัสที่เชื่องมากและอนุญาตให้สร้างเกมแบบไดนามิกผ่านการสื่อสารที่ง่ายของวัตถุและวนรอบเกม ฉันมีช่วงเวลาที่ยากลำบากกับประสิทธิภาพของการใช้งานปัจจุบันของฉัน ปัจจุบันการเพิ่มประสิทธิภาพเล็กน้อยของฉันในการแยกรายการของวัตถุเป็นเหตุการณ์ที่พวกเขาตอบสนองได้ทำสิ่งมหัศจรรย์ แต่ควรมีมากกว่าที่ฉันสามารถทำได้
ขณะนี้ฉันมีสองวิธี:
ง่ายที่สุด:วัตถุทั้งหมดจะถูกเพิ่มลงในเวกเตอร์เมื่อมีการส่งเหตุการณ์วัตถุทั้งหมดจะถูกส่งเหตุการณ์ผ่านมันเป็นวิธี handle_event ()
มีความซับซ้อนมากขึ้น:ฉันมีแผนที่พร้อมสตริงที่สำคัญและมีค่า เมื่อมีการเพิ่มประเภทเหตุการณ์มันจะถูกเพิ่มลงในแผนที่นี้โดยมีการเพิ่มค่า int (ต้องมีวิธีที่ดีกว่า)
เวกเตอร์ของวัตถุเวกเตอร์จากนั้นจึงผลักเวกเตอร์ใหม่เพื่อจัดการเหตุการณ์ประเภทนั้น
เมื่อมีเหตุการณ์ที่เรียกว่ามันก็เรียก int ที่สอดคล้องกันในแผนที่ eventTypes ประเภทที่อยู่ในเวกเตอร์ของวัตถุเวกเตอร์และส่งเหตุการณ์นั้นไปยังแต่ละวัตถุการจัดการประเภทเหตุการณ์ที่
วิธีแรกเหล่านี้ค่อนข้างช้า (ชัด) สำหรับวัตถุจำนวนมาก แต่ค่อนข้างเร็วสำหรับวัตถุน้อยมาก ในขณะที่วิธีที่สองค่อนข้างรวดเร็วด้วยวัตถุขนาดใหญ่ที่ต้องการจัดการเหตุการณ์ประเภทต่าง ๆ แต่ช้ากว่าวิธีแรกต่อวัตถุที่มีวัตถุที่จัดการกับเหตุการณ์ประเภทเดียวกัน
มีวิธีที่เร็วกว่า (ใช้เวลาฉลาด) หรือไม่? มีวิธีที่เร็วกว่าในการค้นหา int จากชนิดสตริงหรือไม่ (เริ่มแรกฉันมี enum แต่มันไม่อนุญาตให้ใช้ประเภทแบบกำหนดเองซึ่งมีความจำเป็นเนื่องจากระดับพลวัตที่ต้องการ)