// πŸš€ 100만 λ…Έλ“œ λŒ€κ·œλͺ¨ 병렬 + μ‹€μ‹œκ°„ νŒŒλ™ μ£Όμž… 톡합 벀치마크 (src/bin/run_large_scale.rs) #[path="../live_streamer.rs"] mod live_streamer; #[path="../parallel_engine.rs"] mod parallel_engine; #[path="../korean_telemetry.rs"] mod korean_telemetry; use std::time::Instant; use live_streamer::LiveSignalStreamer; use parallel_engine::LargeScaleEngine; use korean_telemetry::TelemetryReporter; fn main() { println!("============================================================"); println!(" πŸš€ BioPhys 100만 λ…Έλ“œ(1024x1024) λŒ€κ·œλͺ¨ 병렬 μ—”μ§„ ꡬ동"); println!("============================================================\n"); let grid_size = 1024; // 1,048,576 λ…Έλ“œ let total_nodes = grid_size * grid_size; println!("βš™οΈ [μ‹œμŠ€ν…œ 사양] 총 {}개 8λŒ€ μœ„μƒ λ…Έλ“œ ν• λ‹Ή μ™„λ£Œ (1M Nodes)", total_nodes); let mut engine = LargeScaleEngine::new(grid_size); let mut streamer = LiveSignalStreamer::new(3.0); // 3Hz 고쑰파 νŒŒλ™ println!("🌊 [μ‹€μ‹œκ°„ μ‹ ν˜Έ] 고주파 μ™ΈλΆ€ νŒŒλ™(Harmonic Wave) μ‹€μ‹œκ°„ μ£Όμž… μ‹œμž‘...\n"); let total_ticks = 10; let start_time = Instant::now(); for tick in 1..=total_ticks { // 1. μ™ΈλΆ€ μ‹€μ‹œκ°„ νŒŒλ™ μ‹ ν˜Έ 생성 및 μ•”λ°˜μΈ΅ μ£Όμž… let external_wave = streamer.generate_harmonic_wave(grid_size); for (b, w) in engine.bedrock.iter_mut().zip(external_wave.iter()) { *b = (*b * 0.7) + (*w * 0.3); // μ™ΈλΆ€ νŒŒλ™ μœ΅ν•© } // 2. 100만 λ…Έλ“œ λ©€ν‹°μŠ€λ ˆλ“œ 병렬 계산 (Rayon) let tick_start = Instant::now(); let avg_energy = engine.step_parallel(); let tick_dur = tick_start.elapsed(); // 3. ν•œκ΅­μ–΄ ν…”λ ˆλ©”νŠΈλ¦¬ 보고 let sample_phases: Vec = engine.topsoil[0..10_000].iter().map(|p| p.value()).collect(); let report = TelemetryReporter::analyze(&sample_phases, avg_energy, tick); print!("{}", report); println!(" └─ 100만 λ…Έλ“œ 1-Tick μ†Œμš” μ‹œκ°„: {:.2} ms\n", tick_dur.as_secs_f64() * 1000.0); } let total_elapsed = start_time.elapsed().as_secs_f64(); let total_cell_updates = (total_nodes as f64) * (total_ticks as f64); let mega_updates_per_sec = (total_cell_updates / total_elapsed) / 1_000_000.0; println!("============================================================"); println!(" πŸ“Š λŒ€κ·œλͺ¨ 병렬 μ‹€μΈ‘ 벀치마크 κ²°κ³Ό"); println!("============================================================"); println!(" ⏱️ 총 μ—°μ‚° μ‹œκ°„ : {:.4} 초", total_elapsed); println!(" πŸ”„ 총 κ°±μ‹  μ…€ 수 : {:.1} Million Cells", total_cell_updates / 1_000_000.0); println!(" ⚑ λ©€ν‹°μŠ€λ ˆλ“œ μ²˜λ¦¬λŸ‰ : {:.2} MCell/sec (μ΄ˆλ‹Ή μˆ˜μ–΅ 개 μ…€)", mega_updates_per_sec); println!("============================================================"); }