Merge pull request #1110 from nymkappa/feature/filter-out-extreme-values
Cap extreme vbytes_per_second values
This commit is contained in:
commit
a4a8fb64b1
@ -320,7 +320,7 @@ class Statistics {
|
|||||||
private getQueryForDays(div: number, interval: string) {
|
private getQueryForDays(div: number, interval: string) {
|
||||||
return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions,
|
return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions,
|
||||||
tx_per_second,
|
tx_per_second,
|
||||||
vbytes_per_second,
|
CAST(avg(vbytes_per_second) as FLOAT) as vbytes_per_second,
|
||||||
vsize_1,
|
vsize_1,
|
||||||
vsize_2,
|
vsize_2,
|
||||||
vsize_3,
|
vsize_3,
|
||||||
|
@ -124,6 +124,8 @@ export class StatisticsComponent implements OnInit {
|
|||||||
mempoolStats.reverse();
|
mempoolStats.reverse();
|
||||||
const labels = mempoolStats.map(stats => stats.added);
|
const labels = mempoolStats.map(stats => stats.added);
|
||||||
|
|
||||||
|
this.capExtremeVbytesValues();
|
||||||
|
|
||||||
this.mempoolTransactionsWeightPerSecondData = {
|
this.mempoolTransactionsWeightPerSecondData = {
|
||||||
labels: labels,
|
labels: labels,
|
||||||
series: [mempoolStats.map((stats) => [stats.added * 1000, stats.vbytes_per_second])],
|
series: [mempoolStats.map((stats) => [stats.added * 1000, stats.vbytes_per_second])],
|
||||||
@ -162,4 +164,31 @@ export class StatisticsComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All value higher that "median * capRatio" are capped
|
||||||
|
*/
|
||||||
|
capExtremeVbytesValues() {
|
||||||
|
let capRatio = 10;
|
||||||
|
if (['1m', '3m', '6m', '1y', '2y', '3y'].includes(this.graphWindowPreference)) {
|
||||||
|
capRatio = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find median value
|
||||||
|
let vBytes : number[] = [];
|
||||||
|
for (let i = 0; i < this.mempoolStats.length; ++i) {
|
||||||
|
vBytes.push(this.mempoolStats[i].vbytes_per_second);
|
||||||
|
}
|
||||||
|
const sorted = vBytes.slice().sort((a, b) => a - b);
|
||||||
|
const middle = Math.floor(sorted.length / 2);
|
||||||
|
let median = sorted[middle];
|
||||||
|
if (sorted.length % 2 === 0) {
|
||||||
|
median = (sorted[middle - 1] + sorted[middle]) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cap
|
||||||
|
for (let i = 0; i < this.mempoolStats.length; ++i) {
|
||||||
|
this.mempoolStats[i].vbytes_per_second = Math.min(median * capRatio, this.mempoolStats[i].vbytes_per_second);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user