duration
This commit is contained in:
18
src/main.rs
18
src/main.rs
@@ -31,9 +31,16 @@ async fn main()->Result<(),Error>{
|
||||
return Err(Error::InvalidArgs);
|
||||
};
|
||||
|
||||
const ONE_SECOND:u64=1<<32;
|
||||
struct FoldState{
|
||||
count:usize,
|
||||
jumps:u64,
|
||||
duration:u64,
|
||||
}
|
||||
impl std::fmt::Display for FoldState{
|
||||
fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{
|
||||
write!(f,"count={} jumps={} duration={}",self.count,self.jumps,self.duration as f64/(ONE_SECOND as f64))
|
||||
}
|
||||
}
|
||||
|
||||
let available_parallelism=std::thread::available_parallelism()?.get();
|
||||
@@ -54,14 +61,19 @@ async fn main()->Result<(),Error>{
|
||||
}
|
||||
})
|
||||
.buffer_unordered(available_parallelism)
|
||||
.try_fold(FoldState{count:0,jumps:0},async|mut state,(path,block)|{
|
||||
.try_fold(FoldState{count:0,jumps:0,duration:0},async|mut state,(path,block)|{
|
||||
state.count+=1;
|
||||
state.jumps+=block.sound_events.iter()
|
||||
.filter(|event|event.event.sound_type==v0::SoundType::JumpGround)
|
||||
.count() as u64;
|
||||
println!("{} {:?} tally={}",state.count,path.file_name(),state.jumps);
|
||||
if let (Some(first),Some(last))=(block.output_events.first(),block.output_events.last()){
|
||||
let last=last.time*(ONE_SECOND as f64);
|
||||
let first=first.time*(ONE_SECOND as f64);
|
||||
state.duration+=last as u64-first as u64;
|
||||
}
|
||||
println!("{:?} {}",path.file_name(),state);
|
||||
Ok(state)
|
||||
}).await?;
|
||||
println!("total jump count = {}",tally.jumps);
|
||||
println!("{}",tally);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user