可以即时增加 UV_THREADPOOL_SIZE 吗?
Possible to increase UV_THREADPOOL_SIZE on the fly?
我正在 NodeJS 上试验多线程并研究下面的代码
const crypto = require('crypto');
const start = Date.now();
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('1:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('2:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('3:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('4:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('5:', Date.now() - start);
});
如果我错了请纠正我,默认情况下 libuv 的线程池大小为 4,如 here 所述。因此,通过 运行 上面的代码,每个 crypto.pbkdf2
都同时分配给单独的线程和 运行,而第五个将等待一段时间 运行。下面是结果
1: 484
2: 490
3: 490
4: 490
5: 963
我可以理解第五个 crypto.pbkdf2
由于线程不足而使时间加倍 运行ning 并行,所以现在我正在探索增加线程池的大小。下面是我的尝试,但结果似乎是一样的?
$ set UV_THREADPOOL_SIZE=120 && node threads.js
2: 487
3: 492
1: 493
4: 493
5: 986
您应该通过 console.log(process.env.UV_THREADPOOL_SIZE)
验证您是否确实成功设置了环境变量,如果您这样做,您会发现它是 undefined
。
问题在于你如何调用你的命令,它应该如下所示
UV_THREADPOOL_SIZE=120 node threads.js
我正在 NodeJS 上试验多线程并研究下面的代码
const crypto = require('crypto');
const start = Date.now();
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('1:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('2:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('3:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('4:', Date.now() - start);
});
crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
console.log('5:', Date.now() - start);
});
如果我错了请纠正我,默认情况下 libuv 的线程池大小为 4,如 here 所述。因此,通过 运行 上面的代码,每个 crypto.pbkdf2
都同时分配给单独的线程和 运行,而第五个将等待一段时间 运行。下面是结果
1: 484
2: 490
3: 490
4: 490
5: 963
我可以理解第五个 crypto.pbkdf2
由于线程不足而使时间加倍 运行ning 并行,所以现在我正在探索增加线程池的大小。下面是我的尝试,但结果似乎是一样的?
$ set UV_THREADPOOL_SIZE=120 && node threads.js
2: 487
3: 492
1: 493
4: 493
5: 986
您应该通过 console.log(process.env.UV_THREADPOOL_SIZE)
验证您是否确实成功设置了环境变量,如果您这样做,您会发现它是 undefined
。
问题在于你如何调用你的命令,它应该如下所示
UV_THREADPOOL_SIZE=120 node threads.js