Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Jsx | 1,418 | 154 | 40 | 2 years ago | 90 | May 19, 2014 | 97 | mit | JavaScript | |
JSX - a faster, safer, easier JavaScript | ||||||||||
Sympact | 439 | 4 | 8 | 5 years ago | 7 | May 28, 2018 | 3 | mit | JavaScript | |
🔥 Simple stupid CPU/MEM "Profiler" for your JS code. | ||||||||||
Grepconsole | 398 | 20 days ago | 31 | apache-2.0 | Java | |||||
IntelliJ plugin - https://plugins.jetbrains.com/plugin/7125 | ||||||||||
Bazel Watcher | 364 | 7 days ago | 56 | August 21, 2022 | 16 | apache-2.0 | Go | |||
Tools for building Bazel targets when source files change. | ||||||||||
Pprof Nodejs | 219 | 5 | 1 | a month ago | 13 | July 12, 2021 | 25 | apache-2.0 | JavaScript | |
pprof support for Node.js | ||||||||||
Xhprofbundle | 213 | 7 | 2 | 7 years ago | 6 | October 01, 2015 | 9 | PHP | ||
XHProf bundle for Symfony 2 | ||||||||||
Codeigniter Forensics | 193 | 10 | 1 | 3 years ago | 1 | August 03, 2016 | 5 | PHP | ||
A high-powered, customizable Profiler replacement for CodeIgniter. | ||||||||||
Console.io | 185 | 4 | 3 | 7 years ago | 24 | November 29, 2016 | 14 | JavaScript | ||
JavaScript Remote Web Console | ||||||||||
Dconsole | 170 | 3 years ago | 6 | September 24, 2015 | 12 | mit | Haxe | |||
Haxe game-like console that provides runtime acess to methods, variables and more. | ||||||||||
Jcoz | 165 | 3 years ago | 28 | gpl-3.0 | Java | |||||
JCoz -- The first Java causal profiler |
An easy way to calculate the 'impact' of running a task in Node.JS
Coded with by Simone Primarosa.
Sympact runs a script and profiles its execution time, CPU usage, and memory usage. Sympact then returns an execution report containing the averages of the results.
Do you believe that this is useful?
Has it saved you time?
Or maybe you simply like it?
If so, show your appreciation with a Star .
sympact spawns a separate process and runs your script in an isolated node process and then collects statistics about the system's resource used by your script.
The data are collected using pidusage in combination with
pidtree.
The main difference between other projects is that sympact will also
"profile" processes spawned by your script or by any of its children.
Finally a report of the samples taken is computed and returned to you.
npm install --save sympact
const impact = require('sympact');
const report = await impact(`
let r = 2;
let c = 10e7;
while (c--) r = Math.pow(r, r);
return r;
`, {interval: 125}); // 125 ms of sampling rate
console.log(report.times.execution.end - report.times.execution.start);
// => 2700 ms
console.log(report.stats.cpu.mean);
// => 90.45 % on my machine
console.log(report.stats.memory.mean);
// => 27903317.33 bytes on my machine
To make it more usable, a CLI is bundled with the package allowing for an aesthetically pleasing report.
npx sympact "console.log('Hello World')"
You can even require other files.
npx sympact "
const {spawn} = require('child_process');
let childno = 10;
let childs = [];
for (let i = 0; i < childno; i++) {
childs.push(spawn('node', ['-e', 'setInterval(()=>{let c=10e3;while(c--);},10)']));
}
let c = 10e6;
let m = {};
while (c--) m[c] = c;
for (let i = 0; i < childno; i++) {
childs[i].kill();
}
"
The object returned by the promise will look like this.
{
"times": {
"sampling": {
"start": 1521666020917, // ms since epoch
"end": 1521666036041 // ms since epoch
},
"execution": {
"start": 1521666020958, // ms since epoch
"end": 1521666036006 // ms since epoch
}
},
"stats": {
"cpu": { // CPU usage statistics (percentage)
"mean": 74.17368421052636,
"median": 75.1,
"stdev": 11.820700343128212,
"max": 94.7,
"min": 0.7
},
"memory": { // RAM usage statistics (bytes)
"mean": 1080202186.1052632,
"median": 1327509504,
"stdev": 416083837.44653314,
"max": 1327513600,
"min": 23441408
}
},
"samples": { // List of all the samples taken
"period": 125, // Sampling period
"count": 114, // Number of samples taken
"list": {
"39": { // Taken after 39ms after the start of the watch command
"cpu": 0.7, // Sum of the usages of all the processes
"memory": 23441408, // Sum of the memory of all the processes
"processes": [{ // List of processes profiled in this timeframe
"cpu": 0.7,
"memory": 23441408,
"ppid": 837,
"pid": 839,
"ctime": 6000,
"elapsed": 1000,
"timestamp": 1521666020955 // ms since epoch
}]
},
"205": {
"cpu": 14.8,
"memory": 55685120,
"processes": [{
"cpu": 14.8,
"memory": 55685120,
"ppid": 837,
"pid": 839,
"ctime": 15000,
"elapsed": 2000,
"timestamp": 1521666021122
}]
},
[...]
"15124": {
"cpu": 81.2,
"memory": 878133248,
"processes": [{
"cpu": 81.2,
"memory": 878133248,
"ppid": 837,
"pid": 839,
"ctime": 47600,
"elapsed": 17000,
"timestamp": 1521666036041
}]
}
}
}
}
Promise.<Object>
Measures the impact of running a certain script on your system. Monitors the cpu and memory usage of the whole tree of processes generated by the script provided.
Kind: global function
Returns: Promise.<Object>
- An object containing the results.
Access: public
Param | Type | Default | Description |
---|---|---|---|
code | string |
The source code to test. | |
[options] | Object |
Optional configurations. | |
[options.interval] | number |
125 |
Sampling interval in milliseconds. |
[options.cwd] | string |
"caller path" |
CWD for the script. |
Contributions are REALLY welcome and if you find a security flaw in this code, PLEASE report it.
Please check the contributing guidelines for more details. Thanks!
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the license file for details.