Advertisement
Guest User

Untitled

a guest
May 24th, 2025
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.22 KB | None | 0 0
  1. use std::fs;
  2. use std::time::Instant;
  3.  
  4. #[tokio::main]
  5. async fn main() {
  6.     println!("Hello, world!");
  7.  
  8.     let path = "/usr/bin";
  9.  
  10.     let start = Instant::now();
  11.     list_files_async(path).await;
  12.     let async_duration = start.elapsed();
  13.     println!("Async time: {:?}", async_duration);
  14.  
  15.     let start = Instant::now();
  16.     list_files_sync(path);
  17.     let sync_duration = start.elapsed();
  18.     println!("Sync time: {:?}", sync_duration);
  19. }
  20.  
  21. async fn list_files_async(path: &str) {
  22.     let mut total_size = 0;
  23.     let mut entries = tokio::fs::read_dir(path).await.unwrap();
  24.     let mut tasks = Vec::new();
  25.  
  26.     while let Some(entry) = entries.next_entry().await.unwrap() {
  27.         let task = tokio::spawn(async move { entry.metadata().await.unwrap().len() });
  28.         tasks.push(task);
  29.     }
  30.  
  31.     for task in tasks {
  32.         total_size += task.await.unwrap();
  33.     }
  34.     println!("Async total_size: {}", total_size);
  35. }
  36.  
  37. fn list_files_sync(path: &str) {
  38.     let mut total_size = 0;
  39.     for entry in fs::read_dir(path).unwrap() {
  40.         let entry = entry.unwrap();
  41.         let file_size = entry.metadata().unwrap().len();
  42.         total_size += file_size;
  43.     }
  44.     println!("Sync total_size: {}", total_size);
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement