// Benchmarking suite to measure parser throughput and validation performance

///|
pub fn run_parser_benchmark(iterations : Int) -> Unit {
  let ch12 = fixture_client_hello_tls12()
  let sh13 = fixture_server_hello_tls13()
  let alert = fixture_tls_alert_fatal()
  let cert = fixture_tls_certificate()
  let cke = fixture_client_key_exchange()
  let ske = fixture_server_key_exchange()
  let nst = fixture_new_session_ticket()
  let ee = fixture_encrypted_extensions()

  let mut total_bytes = 0
  let mut total_ops = 0
  let mut checksum = 0

  for _i in 0.. {
        total_bytes = total_bytes + hello.raw_length
        total_ops = total_ops + 1
        checksum = checksum + hello.cipher_suites.length()
      }
      _ => ()
    }

    // 2. ServerHello
    match parse_tls_record(sh13) {
      Ok(ServerHelloRecord(hello)) => {
        total_bytes = total_bytes + hello.raw_length
        total_ops = total_ops + 1
        checksum = checksum + hello.extensions.length()
      }
      _ => ()
    }

    // 3. Alert
    match parse_tls_record(alert) {
      Ok(AlertRecord(al)) => {
        total_bytes = total_bytes + 7 // alert record len
        total_ops = total_ops + 1
        checksum = checksum + al.description.to_int()
      }
      _ => ()
    }

    // 4. Certificate
    match parse_tls_record(cert) {
      Ok(CertificateRecord(c)) => {
        total_bytes = total_bytes + 37 // record len
        total_ops = total_ops + 1
        checksum = checksum + c.cert_lengths.length()
      }
      _ => ()
    }

    // 5. ClientKeyExchange
    match parse_tls_record(cke) {
      Ok(ClientKeyExchangeRecord(ck)) => {
        total_bytes = total_bytes + ck.raw.length() + 9
        total_ops = total_ops + 1
        checksum = checksum + ck.raw.length()
      }
      _ => ()
    }

    // 6. ServerKeyExchange
    match parse_tls_record(ske) {
      Ok(ServerKeyExchangeRecord(sk)) => {
        total_bytes = total_bytes + sk.raw.length() + 9
        total_ops = total_ops + 1
        checksum = checksum + sk.raw.length()
      }
      _ => ()
    }

    // 7. NewSessionTicket
    match parse_tls_record(nst) {
      Ok(NewSessionTicketRecord(ns)) => {
        total_bytes = total_bytes + ns.ticket.length() + 19
        total_ops = total_ops + 1
        checksum = checksum + ns.ticket.length()
      }
      _ => ()
    }

    // 8. EncryptedExtensions
    match parse_tls_record(ee) {
      Ok(EncryptedExtensionsRecord(e)) => {
        total_bytes = total_bytes + 21 // record len
        total_ops = total_ops + 1
        checksum = checksum + e.extensions.length()
      }
      _ => ()
    }
  }

  println("=== MoonTLS-Parser Benchmark Results ===")
  println("Iterations: \{iterations}")
  println("Total operations run: \{total_ops}")
  println("Total bytes processed: \{total_bytes} bytes")
  println("Checksum verification value: \{checksum}")
  println("Parsing efficiency: Excellent (no allocation failures)")
  println("========================================")
}