Apply AVG() on vbytes_per_second - Cap extreme vbytes_per_second values
This commit is contained in:
		
							parent
							
								
									d809e85dde
								
							
						
					
					
						commit
						45542d5f06
					
				@ -320,7 +320,7 @@ class Statistics {
 | 
			
		||||
  private getQueryForDays(div: number, interval: string) {
 | 
			
		||||
    return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions,
 | 
			
		||||
      tx_per_second,
 | 
			
		||||
      vbytes_per_second,
 | 
			
		||||
      CAST(avg(vbytes_per_second) as FLOAT) as vbytes_per_second,
 | 
			
		||||
      vsize_1,
 | 
			
		||||
      vsize_2,
 | 
			
		||||
      vsize_3,
 | 
			
		||||
 | 
			
		||||
@ -124,6 +124,8 @@ export class StatisticsComponent implements OnInit {
 | 
			
		||||
    mempoolStats.reverse();
 | 
			
		||||
    const labels = mempoolStats.map(stats => stats.added);
 | 
			
		||||
 | 
			
		||||
    this.capExtremeVbytesValues();
 | 
			
		||||
 | 
			
		||||
    this.mempoolTransactionsWeightPerSecondData = {
 | 
			
		||||
      labels: labels,
 | 
			
		||||
      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