initial
This commit is contained in:
73
node_modules/onoff/test/performance-async.js
generated
vendored
Normal file
73
node_modules/onoff/test/performance-async.js
generated
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
"use strict";
|
||||
|
||||
const Gpio = require('../onoff').Gpio;
|
||||
|
||||
const pulseLed = (led, pulseCount, cb) => {
|
||||
let time = process.hrtime();
|
||||
|
||||
const loop = (count) => {
|
||||
if (count === 0) {
|
||||
time = process.hrtime(time);
|
||||
const writesPerSecond = pulseCount * 2 / (time[0] + time[1] / 1E9);
|
||||
return cb(null, writesPerSecond);
|
||||
}
|
||||
|
||||
led.write(1, (err) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
led.write(0, (err) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
loop(count - 1);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
loop(pulseCount);
|
||||
};
|
||||
|
||||
const asyncWritesPerSecond = (cb) => {
|
||||
const led = new Gpio(17, 'out');
|
||||
let writes = 0;
|
||||
|
||||
const loop = (count) => {
|
||||
if (count === 0) {
|
||||
led.unexport();
|
||||
return cb(null, writes / 10);
|
||||
}
|
||||
|
||||
pulseLed(led, 10000, (err, writesPerSecond) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
writes += writesPerSecond;
|
||||
|
||||
loop(count - 1);
|
||||
});
|
||||
};
|
||||
|
||||
// Do a dry run first to get the runtime primed
|
||||
pulseLed(led, 5000, (err, writesPerSecond) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
loop(10);
|
||||
});
|
||||
};
|
||||
|
||||
asyncWritesPerSecond((err, averageWritesPerSecond) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
console.log('ok - ' + __filename);
|
||||
console.log(
|
||||
' ' + Math.floor(averageWritesPerSecond) + ' async writes per second'
|
||||
);
|
||||
});
|
||||
|
Reference in New Issue
Block a user