Closed
Description
- Version:
Node.js v6.7.0 / Node.js 4.4.2 - Platform:
Ubuntu 14.04 LTS x64 (v6.7.0) / macOS Sierra (v4.4.2) - Subsystem:
VM
I just found there's unexpected behavior on timeout
option of vm.runInContext
.
When timeout
option was specified, Script execution on VM is much slower then timeout
options wasn't specified.
This is two of example snippets to reproduce that problem:
vm-normal.js
'use strict';
const
vm = require('vm'),
sandbox = {
current: -1
};
console.time('vm-normal');
vm.createContext(sandbox);
for (let i = 0 ; i < 100000 ; i++) {
vm.runInContext(`current = ${i};`, sandbox, {
displayErrors: false
});
}
console.timeEnd('vm-normal');
vm-with-timeout.js
'use strict';
const
vm = require('vm'),
sandbox = {
current: -1
};
console.time('vm-with-timeout');
vm.createContext(sandbox);
for (let i = 0 ; i < 100000 ; i++) {
vm.runInContext(`current = ${i};`, sandbox, {
displayErrors: false,
timeout: 1000
});
}
console.timeEnd('vm-with-timeout');
I think maybe that's not a bug (timer for timeout is expansive?), but that's unexpected behavior. It would be nice if that limitation should be documented on VM API documentation.