ผู้แต่งครามที่นี่
V8 สัญญาว่าจะใช้งานเขียนใน JavaScriptไม่ใช่ C. JavaScript ทั้งหมด (รวมถึง V8 เอง) ถูกคอมไพล์เป็นรหัสเนทีฟ นอกจากนี้ JavaScript ที่ผู้ใช้เขียนถูกปรับให้เหมาะสมถ้าเป็นไปได้ (และคุ้มค่า) ก่อนที่จะรวบรวมเป็นรหัสเนทีฟ การติดตั้งสัญญาเป็นสิ่งที่จะไม่เกิดประโยชน์มากหรืออย่างมากจากการเขียนใน C อันที่จริงแล้วมันจะทำให้ช้าลงเพราะสิ่งที่คุณกำลังทำคือการจัดการกับวัตถุและการสื่อสารของจาวาสคริปต์
การดำเนิน V8 ก็ไม่เป็นที่ที่ดีที่สุดเป็นนกชนิดหนึ่งก็สำหรับกรณีจัดสรรอาร์เรย์สำหรับตัวจัดการสัญญา สิ่งนี้ใช้หน่วยความจำจำนวนมากเมื่อแต่ละสัญญามีการจัดสรรอาร์เรย์สองสามชุด (มาตรฐานสร้างสัญญา 80k โดยรวมเพื่อให้จัดสรรอาร์เรย์ที่ไม่ได้ใช้ 160k) ในความเป็นจริง 99.99% ของกรณีการใช้งานไม่เคยแยกสัญญามากกว่าหนึ่งครั้งดังนั้นการเพิ่มประสิทธิภาพสำหรับกรณีทั่วไปนี้จะได้รับการปรับปรุงการใช้งานหน่วยความจำขนาดใหญ่
แม้ว่า V8 จะใช้การเพิ่มประสิทธิภาพเช่นเดียวกับ Bluebird แต่ก็ยังคงถูกขัดขวางโดยข้อกำหนด มาตรฐานต้องใช้new Promise
(รูปแบบการต่อต้านใน Bluebird) เนื่องจากไม่มีวิธีอื่นในการสร้างคำสัญญาที่สำคัญใน ES6 new Promise
เป็นวิธีที่ช้ามากในการสร้างสัญญาครั้งแรกฟังก์ชั่นผู้ดำเนินงานจัดสรรการปิดอย่างที่สองมันจะผ่าน 2 ปิดแยกเป็นอาร์กิวเมนต์ นั่นคือการปิด 3 ครั้งที่จัดสรรต่อสัญญา แต่การปิดเป็นวัตถุที่มีราคาแพงกว่าสัญญาที่ปรับให้เหมาะสมแล้ว
Bluebird สามารถใช้promisify
ซึ่งเปิดใช้งานการปรับแต่งมากมายและเป็นวิธีที่สะดวกกว่าในการใช้ API การโทรกลับและช่วยให้การแปลงโมดูลทั้งหมดเป็นโมดูลที่อิงตามสัญญาในหนึ่งบรรทัด ( promisifyAll(require('redis'));
)