| 480 | } |
| 481 | |
| 482 | function linearSlope(samples: MemorySample[]) { |
| 483 | if (samples.length < 2) { |
| 484 | return 0; |
| 485 | } |
| 486 | |
| 487 | const meanX = samples.reduce((sum, sample) => sum + sample.cycle, 0) / samples.length; |
| 488 | const meanY = samples.reduce((sum, sample) => sum + sample.rssBytes, 0) / samples.length; |
| 489 | const numerator = samples.reduce( |
| 490 | (sum, sample) => sum + (sample.cycle - meanX) * (sample.rssBytes - meanY), |
| 491 | 0, |
| 492 | ); |
| 493 | const denominator = samples.reduce((sum, sample) => sum + (sample.cycle - meanX) ** 2, 0); |
| 494 | return denominator === 0 ? 0 : numerator / denominator; |
| 495 | } |
| 496 | |
| 497 | async function main() { |
| 498 | const options = parseArgs(process.argv.slice(2)); |