Кажется, существует огромная разница в производительности между Linux и Windows при обработке ошибок на модуле net
NodeJS. Я обрабатывал ошибку ECONNREFUSED
на Windows, которая, казалось, была почти в 85 раз медленнее по сравнению с Linux.
. Взгляните на следующий файл с нуля:
const net = require("net");
console.time("Timing");
const connection = net.createConnection(9999, "localhost");
connection.on("error", err => {
console.log(err);
console.timeEnd("Timing");
});
Результат запуска этого файла на Windows 10 Pro 64bit:
Error: connect ECONNREFUSED 127.0.0.1:9999
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 9999
}
Timing: 2030.534ms
Обратите внимание, что время здесь 2030.534ms
.
Результат выполнения этого скрипта на WSL
{ Error: connect ECONNREFUSED 127.0.0.1:9999
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 9999 }
Timing: 24.748ms
Время здесь 24.748ms
.
Почему этот разрыв в производительности такой большой? Кто-нибудь может уточнить, что происходит внутри при выполнении вышеуказанного скрипта и что может привести к разнице в производительности?
Edit Я проверил, какие версии Node у меня работают возможность сравнения двух: Windows: v12.11.1
WSL: v10.16.3
Я использую WSL2 на Windows 10.0.18363 N / Сборка 18363
Чтобы убедиться, что эта проблема возникает на одной и той же версии узла I, в обеих средах обновлен узел до v12.14.1
. Windows был все еще намного медленнее, чем WSL. Вот результаты теста:
Windows:
Error: connect ECONNREFUSED 127.0.0.1:9999
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1134:16) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 9999
}
Timing: 2038.687ms
WSL:
Error: connect ECONNREFUSED 127.0.0.1:9999
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1134:16) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 9999
}
Timing: 18.661ms