Promisiunile native sunt încă mai lente în Node față de biblioteci cum ar fi Bluebird? [închis] (Inginerie software, Javascript, Node.Js, Promisiuni)

bloppit a intrebat.

Se aplică în continuare această întrebare: De ce sunt promisiunile native ES6 mai lente și mai consumatoare de memorie decât bluebird?

În ceea ce privește cele mai recente versiuni de Node.js și EC7?

Comentarii

  • Rulați câteva teste și aflați. –  > Por Robert Harvey.
  • Votez pentru a închide această întrebare ca fiind în afara subiectului, deoarece nu se referă la concepte de dezvoltare software. Vă rugăm să vă uitați la centrul de ajutor pentru a înțelege ce tipuri de întrebări sunt acceptabile aici. De asemenea, orice răspuns la această întrebare nu ar avea o valoare de durată, deoarece performanța unei implementări s-ar putea schimba cu orice actualizare. –  > Por amon.
  • Deci, unde sugerați să fie pusă acest tip de întrebare? –  > Por bloppit.
  • Mă tem că nicăieri la Stack Exchange. „Am încercat deja să susținem aceste întrebări, le-am dat chiar și propriul lor site. Din păcate, nu a funcționat…” –  > Por gnat.
1 răspunsuri
rsp

Da

Am făcut câteva teste și se pare că din septembrie 2016 Bluebird este în continuare mult mai rapid.

Pentru benchmark-urile de pe site-ul Bluebird, vezi:

Dar este întotdeauna cel mai bine să faceți propriile teste pentru cazul de utilizare specific de care aveți nevoie. Mai jos sunt propriile mele teste pentru promisiuni foarte adânc imbricate, cu o mulțime de .then și new Promise().

Testele mele

Iată testele mele:

native.js

var P = Promise;
var p = P.resolve('done');
for (var i = 0; i < 1000000; i++) {
  p = p.then(a => new P((res, rej) => res(a)));
}
p.then(console.log);

bluebird.js

var P = require('bluebird');
var p = P.resolve('done');
for (var i = 0; i < 1000000; i++) {
  p = p.then(a => new P((res, rej) => res(a)));
}
p.then(console.log);

Viteză

Pe Node 5.12.0:

$ time node native.js
real    0m5.508s
user    0m5.040s
sys     0m0.385s

$ time node bluebird.js 
real    0m0.968s
user    0m0.861s
sys     0m0.071s

Pe Node 6.5.0:

$ time node native.js
real    0m7.609s
user    0m7.362s
sys     0m0.260s

$ time node bluebird.js 
real    0m1.053s
user    0m1.033s
sys     0m0.053s

Memorie

Pe Nod 5.12.0:

$ /usr/bin/time -v node native.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 886644

$ /usr/bin/time -v node bluebird.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 186940

În Nodul 6.5.0:

$ /usr/bin/time -v node native.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 767832

$ /usr/bin/time -v node bluebird.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 187912

Se pare că promisiunile native devin mai lente, dacă este cazul.

Comentarii

  • a rulat același script cu nodul 8.9.1 – și este încă cazul că promisiunile bluebird sunt mai rapide + mai ușoare: native 0m2.372s și bluebird 0m1.139s. dar se pare că se apropie din ce în ce mai mult … –  > Por pkyeck.