Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::fs;
- use std::time::Instant;
- #[tokio::main]
- async fn main() {
- println!("Hello, world!");
- let path = "/usr/bin";
- let start = Instant::now();
- list_files_async(path).await;
- let async_duration = start.elapsed();
- println!("Async time: {:?}", async_duration);
- let start = Instant::now();
- list_files_sync(path);
- let sync_duration = start.elapsed();
- println!("Sync time: {:?}", sync_duration);
- }
- async fn list_files_async(path: &str) {
- let mut total_size = 0;
- let mut entries = tokio::fs::read_dir(path).await.unwrap();
- let mut tasks = Vec::new();
- while let Some(entry) = entries.next_entry().await.unwrap() {
- let task = tokio::spawn(async move { entry.metadata().await.unwrap().len() });
- tasks.push(task);
- }
- for task in tasks {
- total_size += task.await.unwrap();
- }
- println!("Async total_size: {}", total_size);
- }
- fn list_files_sync(path: &str) {
- let mut total_size = 0;
- for entry in fs::read_dir(path).unwrap() {
- let entry = entry.unwrap();
- let file_size = entry.metadata().unwrap().len();
- total_size += file_size;
- }
- println!("Sync total_size: {}", total_size);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement