///|
fn run_case(rows : Int, iterations : Int) -> Unit raise {
let schema = @arrow.Schema::new([
@arrow.Field::new("id", Int32, nullable=false),
@arrow.Field::new("label", Utf8),
@arrow.Field::new("score", Float64),
])
let ids = Array::makei(rows, i => Some(i))
let labels = Array::makei(rows, i => {
if i % 7 == 0 {
None
} else {
Some("moonbit-" + (i % 97).to_string())
}
})
let scores = Array::makei(rows, i => {
if i % 11 == 0 {
None
} else {
Some(i.to_double() * 0.125)
}
})
let batch = @arrow.RecordBatch::new(schema, [
Int32s(ids),
Strings(labels),
Float64s(scores),
])
let warmup = @arrow.write_stream(schema, [batch])
ignore(@arrow.read_stream(warmup))
let start_encode = @env.now()
let mut encoded = b""
for _ in 0..