Skip to content

Instantly share code, notes, and snippets.

@spion
Last active February 14, 2016 16:38
Show Gist options
  • Save spion/6c4ca135fb0ce90d45c3 to your computer and use it in GitHub Desktop.
Save spion/6c4ca135fb0ce90d45c3 to your computer and use it in GitHub Desktop.
24840 % node skynet.js
499999500000
regular: 378.414ms
499999500000
warmed-up: 262.341ms
var Promise = require('bluebird')
function skynetAsync(num, size, div) {
if (size == 1) {
return num; //Promise.resolve(num);
}
else {
var tasks = [];
for (var i = 0; i < div; i++) {
var sub_num = num + i * (size / div);
var task = skynetAsync(sub_num, size / div, div);
tasks.push(task);
}
return Promise.all(tasks).then(sum);
}
}
function sum(values) {
var sum = 0;
for (var k = 0; k < values.length; ++k) {
sum += values[k]
}
return sum;
}
console.time("regular")
skynetAsync(0, 1000000, 10)
.then(res => {
console.log(res)
console.timeEnd("regular")
console.time("warmed-up")
return skynetAsync(0, 1000000, 10)
}).then(res => {
console.log(res)
console.timeEnd("warmed-up")
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment