ตามคำขอโดย OPฉันจะชิปใน (โดยไม่ต้องหลอกตัวเองหวังว่า: P)
ฉันคิดว่าเราทุกคนต่างเห็นพ้องกันว่าการเรียกซ้ำเป็นวิธีการเข้ารหัสที่หรูหรายิ่งขึ้น หากทำได้ดีก็สามารถสร้างรหัสที่สามารถบำรุงรักษาได้มากขึ้นซึ่งเป็น IMHO ที่สำคัญเช่นกัน (ถ้าไม่ใช่มากกว่านั้น) ซึ่งจะกำจัด 0.0001ms
เท่าที่อาร์กิวเมนต์ที่ JS ไม่ดำเนินการปรับให้เหมาะสมแบบ Tail-call นั้นไม่เป็นความจริงอีกต่อไปการใช้โหมดที่เข้มงวดของ ECMA5เปิดใช้งาน TCO มันเป็นสิ่งที่ฉันไม่พอใจเกินไปในขณะที่กลับมา แต่อย่างน้อยตอนนี้ฉันรู้ว่าทำไมarguments.callee
ข้อผิดพลาดในโหมดเข้มงวด ฉันรู้ลิงค์ด้านบนลิงก์ไปยังรายงานข้อผิดพลาด แต่ข้อผิดพลาดตั้งเป็น WONTFIX นอกจากนี้ TCO มาตรฐานกำลังมา: ECMA6 (ธันวาคม 2013)
ตามสัญชาตญาณและยึดติดกับลักษณะการทำงานของ JS ฉันจะบอกว่าการเรียกซ้ำเป็นรูปแบบการเข้ารหัสที่มีประสิทธิภาพมากขึ้น 99.99% ของเวลา อย่างไรก็ตาม Florian Margaine มีจุดเมื่อเขาบอกว่าคอขวดมีแนวโน้มที่จะพบที่อื่น หากคุณจัดการกับ DOM คุณควรจดจ่อกับการเขียนโค้ดของคุณให้ดีที่สุดเท่าที่จะทำได้ DOM API คืออะไร: ช้า
ฉันคิดว่าเป็นไปไม่ได้ที่จะเสนอคำตอบที่ชัดเจนว่าเป็นตัวเลือกใดที่เร็วกว่า เมื่อเร็ว ๆ นี้ jspref จำนวนมากที่ฉันเคยเห็นแสดงให้เห็นว่าเครื่องยนต์ V8 ของ Chrome ทำงานได้อย่างรวดเร็วอย่างน่าขันในบางงานซึ่งทำงานช้ากว่า 4x ใน SpiderMonkey ของ FF และในทางกลับกัน เอ็นจิ้น JS สมัยใหม่มีกลอุบายมากมายเพื่อเพิ่มประสิทธิภาพรหัสของคุณ ฉันไม่มีความเชี่ยวชาญ แต่ฉันรู้สึกว่า V8 นั้นเหมาะสำหรับการปิด (และการเรียกซ้ำ) ในขณะที่เอ็นจิ้น JScript ของ MS ไม่ได้เป็นเช่นนั้น SpiderMonkey มักจะทำงานได้ดีขึ้นเมื่อ DOM เกี่ยวข้อง ...
ในระยะสั้น: ฉันจะบอกว่าเทคนิคใดจะมีประสิทธิภาพมากกว่าเช่นใน JS โดยที่ไม่สามารถคาดเดาได้