///|
/// Run a repeatable in-process frame codec benchmark.
fn main {
  let iterations = 100_000
  let start = @env.now()
  let mut checksum : UInt = 0
  let mut encoded_bytes = 0
  for index in 0.. continue
    }
    let encoded = @can.encode_frame(frame)
    let decoded = @can.decode_frame(encoded) catch { _ => continue }
    checksum = checksum ^ decoded.id()
    encoded_bytes += encoded.length()
  }
  let elapsed = @env.now() - start
  let operations_per_second = if elapsed == 0 {
    0.0
  } else {
    iterations.to_double() * 1000.0 / elapsed.to_double()
  }
  println("benchmark=frame-codec")
  println("iterations=\{iterations}")
  println("elapsed_ms=\{elapsed}")
  println("operations_per_second=\{operations_per_second}")
  println("encoded_bytes=\{encoded_bytes}")
  println("checksum=\{checksum}")
}