@@ -324,12 +324,14 @@ impl<T: Clone> Drop for Worker<T> {
324324
325325#[ derive( Clone , Debug , Copy , PartialEq , Default ) ]
326326pub struct Statistic {
327- pub wal_cost : usize ,
328- pub sync_cost : usize ,
327+ pub avg_wal_cost : usize ,
328+ pub avg_sync_cost : usize ,
329329 pub avg_write_cost : usize ,
330+ pub avg_mem_cost : usize ,
330331 pub max_wal_cost : usize ,
331332 pub max_sync_cost : usize ,
332333 pub max_write_cost : usize ,
334+ pub max_mem_cost : usize ,
333335 pub freq : usize ,
334336}
335337
@@ -342,18 +344,9 @@ fn max(left: usize, right: usize) -> usize {
342344}
343345
344346impl Statistic {
345- pub fn add ( & mut self , other : & Self ) {
346- self . wal_cost += other. wal_cost ;
347- self . sync_cost += other. sync_cost ;
348- self . freq += other. freq ;
349- self . max_wal_cost = max ( self . max_wal_cost , other. max_wal_cost ) ;
350- self . max_write_cost = max ( self . max_write_cost , other. max_write_cost ) ;
351- self . max_sync_cost = max ( self . max_sync_cost , other. max_sync_cost ) ;
352- }
353-
354347 pub fn clear ( & mut self ) {
355- self . wal_cost = 0 ;
356- self . sync_cost = 0 ;
348+ self . avg_wal_cost = 0 ;
349+ self . avg_sync_cost = 0 ;
357350 self . avg_write_cost = 0 ;
358351 self . max_wal_cost = 0 ;
359352 self . max_sync_cost = 0 ;
@@ -363,18 +356,20 @@ impl Statistic {
363356
364357 #[ inline]
365358 pub fn add_wal ( & mut self , wal : usize ) {
366- self . wal_cost += wal;
359+ self . avg_wal_cost += wal;
367360 self . max_wal_cost = max ( self . max_wal_cost , wal) ;
368361 }
369362
370363 #[ inline]
371364 pub fn add_sync ( & mut self , sync : usize ) {
372- self . sync_cost += sync;
365+ self . avg_sync_cost += sync;
373366 self . max_sync_cost = max ( self . max_sync_cost , sync) ;
374367 }
375368
376- #[ inline]
377- pub fn add_one ( & mut self ) {
378- self . freq += 1 ;
369+ pub fn divide ( & mut self ) {
370+ if self . freq > 0 {
371+ self . avg_wal_cost /= self . freq ;
372+ self . avg_sync_cost /= self . freq ;
373+ }
379374 }
380375}
0 commit comments