วิธีที่ดีที่สุดในการจัดการเวลาใน Node.js คืออะไร?

วิธีใดคือวิธีที่ดีที่สุดในการจัดการเวลาและเหตุการณ์แบบเรียลไทม์

ฉันกำลังใช้งานเกม RPG ผู้เล่นหลายคนขนาดเล็กกับ Node.js ฉันมี NPC จำนวนมากและแต่ละการเคลื่อนไหวทุกๆ 3 หรือ 4 วินาที ดังนั้นฉันจึงจำเป็นต้องอัปเดตพวกเขา

โซลูชัน A: ใช้หนึ่ง setTimeout ต่อ NPC ถ้าฉันมี NPC หลายร้อยตัว ฉันจะสร้างเป็นตัวจับเวลา ง่ายกว่าแต่มีประสิทธิภาพไม่น้อยใช่ไหม?

โซลูชัน B: ใช้หนึ่ง setTimeout สำหรับ NPC ทั้งหมด แต่ละครั้ง เราจะเรียกการหมดเวลาครั้งถัดไปโดยคำนวณเวลาที่เหลืออยู่น้อยที่สุดก่อนที่ NPC จะย้าย ดังนั้นเราจึงต้องใช้โค้ดที่ซับซ้อนกว่านี้ แต่เรามีเพียง setTimeout เพียงอันเดียว

มันดีกว่า / อย่างอื่นไหม?


person BAK    schedule 09.10.2012    source แหล่งที่มา
comment
ฉันไม่ชอบคำศัพท์เฉพาะเกี่ยวกับ RPG คุณช่วยอธิบายความหมายของ PNJ ได้ไหม   -  person Werner Kvalem Vesterås    schedule 09.10.2012
comment
ฉันใช้คำภาษาฝรั่งเศสสำหรับ NPC (ตัวละครที่ไม่ใช่ผู้เล่น) ขออภัยด้วย แก้ไขแล้ว   -  person BAK    schedule 09.10.2012
comment
บางที [คำถาม/คำตอบ] นี้อาจทำให้กระจ่างเกี่ยวกับเรื่องนี้ได้ [1]: stackoverflow.com/questions/ 12168708/   -  person Werner Kvalem Vesterås    schedule 09.10.2012
comment
@ WernerVesterås กล่าวอีกนัยหนึ่ง setTimeout() มีราคาถูก   -  person nalply    schedule 09.10.2012
comment
มันตอบคำถามของฉัน ขอบคุณ   -  person BAK    schedule 11.10.2012


คำตอบ (1)


ตามที่คำถามที่เกี่ยวข้องบอกว่า setTimeout มีราคาถูก อย่างไรก็ตาม มันไม่ฟรี

คุณสามารถใช้ setTimeout เดี่ยวในลักษณะเดียวกับงาน memcached มันมีอาเรย์ขนาดใหญ่เพียงอันเดียว ทุกวินาที จะตรวจสอบรายการแรก (หรือรายการสุดท้าย) ของอาร์เรย์นี้ และดูว่ามีบางอย่างที่ต้องทำหรือไม่ ถ้ามีก็ทำ จากนั้นจะลบรายการออก ล้างและทำซ้ำ

นี่คือแนวคิดพื้นฐานเบื้องหลังการดำเนินการ คุณอาจได้รับประสิทธิภาพที่ดีขึ้นโดยคิดถึงบัคเก็ตเปล่าหรืออะไรทำนองนี้ แต่การใช้งานแบบง่ายๆ ควรมีประสิทธิภาพค่อนข้างดีอยู่แล้ว

person Florian Margaine    schedule 16.10.2012