///|
/// 秒表演示入口
fn main {
println("=== MoonBit Stopwatch Demos ===")
println("")
demo_basic_usage()
println("")
demo_multiple_laps()
println("")
demo_format_time()
println("")
println("=== All Demos Complete ===")
}
///|
/// 基本使用演示
fn demo_basic_usage() -> Unit {
println("--- Basic Usage ---")
let sw = @lib.Stopwatch::new()
println("New stopwatch, running: " + sw.is_running().to_string())
let sw1 = sw.start()
println("After start, running: " + sw1.is_running().to_string())
println("Elapsed (secs): " + sw1.elapsed_secs().to_string())
let sw2 = sw1.stop()
println("After stop, running: " + sw2.is_running().to_string())
println("Elapsed_nanos: " + sw2.elapsed_nanos().to_string())
let sw3 = sw2.reset()
println("After reset, nanos: " + sw3.elapsed_nanos().to_string())
}
///|
/// 多圈计时演示
fn demo_multiple_laps() -> Unit {
println("--- Multiple Laps ---")
let sw = @lib.Stopwatch::new().start()
println("Started stopwatch")
let (sw1, lap1) = sw.lap("first")
println("Lap 1: " + lap1.label() + " " + @lib.format_nanos(lap1.lap_nanos()))
let (sw2, lap2) = sw1.lap("second")
println("Lap 2: " + lap2.label() + " " + @lib.format_nanos(lap2.lap_nanos()))
let (sw3, lap3) = sw2.lap("third")
println("Lap 3: " + lap3.label() + " " + @lib.format_nanos(lap3.lap_nanos()))
println("Total laps: " + sw3.lap_count().to_string())
let laps = sw3.list_laps()
let mut i = 0
while i < laps.length() {
let lap = laps[i]
println(
" " +
lap.label() +
": split=" +
@lib.format_nanos(lap.lap_nanos()) +
", total=" +
@lib.format_nanos(lap.total_nanos()),
)
i = i + 1
}
let sw4 = sw3.stop()
println("Final time: " + @lib.format_nanos(sw4.elapsed_nanos()))
}
///|
/// 时间格式化演示
fn demo_format_time() -> Unit {
println("--- Time Formatting ---")
let test_times : Array[Double] = [0.0, 5.5, 30.0, 65.25, 3661.123, 7322.456]
let mut i = 0
while i < test_times.length() {
let t = test_times[i]
println(" " + t.to_string() + "s -> " + @lib.format_time(t))
i = i + 1
}
println("--- Nanos Formatting ---")
let test_nanos : Array[Int64] = [0L, 500L, 1500L, 500_000L, 2_500_000L, 1_500_000_000L]
let mut j = 0
while j < test_nanos.length() {
let n = test_nanos[j]
println(" " + n.to_string() + " -> " + @lib.format_nanos(n))
j = j + 1
}
}