crypto.pbkdf2Sync - ~40% performance drop from node 14/16 to 18/20

Aperta
#84 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
javascript, node.js
Ambito
performance

Direzione di ricerca

Inizia con il benchmark crypto.pbkdf2Sync fornito e confronta Node.js 14/16 con 18/20 sulle piattaforme Windows e Linux indicate. Riproduci la regressione, quindi analizza le modifiche al sottosistema crypto tra queste versioni; il lavoro è completato quando la causa è stata identificata e vengono mostrati risultati del benchmark senza un rallentamento comparabile.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Version

v18.16.0

Platform

Microsoft Windows NT 10.0.19045.0 x64

Subsystem

crypto

What steps will reproduce the bug?
const crypto = require('crypto');
const ts = Date.now();
crypto.pbkdf2Sync('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXXXXXXXX', 100000, 32, 'sha512');
console.log(Date.now() - ts);
How often does it reproduce? Is there a required condition?

The code snippet in varying platforms logs lower numbers when ran on Node.js 14 & 16 (better) comparatively to Node.js 18 & 20 (worse).

Examples:

Windows 10

node 14/16: 70
node 18/20: 99

Ubuntu 20

node 14/16: 177
node 18/20: 240

And I've encountered similar results on Ubuntu 22, Debian 11, etc...

What is the expected behavior? Why is that the expected behavior?

I would expect no performance regression.

What do you see instead?

Performance regression ranging from ~30% to ~40%

Additional information

No response

Lingua principale
Shell
Stelle
399
Fork
11
Merge medio
29m
PR unite (30g)
1

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di nodejs/performance

Tutte le issue di nodejs/performance

Issue simili

Altre issue su Shell/Bash

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.