difftreelog
perf faster foldl, foldr
in: master
2 files changed
crates/jrsonnet-evaluator/build.rsdiffbeforeafterboth38 }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals" || **name == *"base64"38 })39 if **name == *"join" || **name == *"manifestJsonEx" ||40 **name == *"escapeStringJson" || **name == *"equals" ||41 **name == *"base64" || **name == *"foldl" || **name == *"foldr"39 )42 )40 })43 })41 .collect(),44 .collect(),crates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth557 .collect(),557 .collect(),558 )))558 )))559 }))?,559 }))?,560 // faster561 ("std", "foldl") => noinline!(parse_args!(context, "std.foldl", args, 3, [562 0, func: [Val::Func]!!Val::Func, vec![ValType::Func];563 1, arr: [Val::Arr]!!Val::Arr, vec![ValType::Arr];564 2, init, vec![];565 ], {566 let mut acc = init;567 for i in arr.iter().cloned() {568 acc = func.evaluate_values(context.clone(), &[acc, i])?;569 }570 Ok(acc)571 }))?,572 // faster573 ("std", "foldr") => noinline!(parse_args!(context, "std.foldr", args, 3, [574 0, func: [Val::Func]!!Val::Func, vec![ValType::Func];575 1, arr: [Val::Arr]!!Val::Arr, vec![ValType::Arr];576 2, init, vec![];577 ], {578 let mut acc = init;579 for i in arr.iter().rev().cloned() {580 acc = func.evaluate_values(context.clone(), &[acc, i])?;581 }582 Ok(acc)583 }))?,560 ("std", "char") => parse_args!(context, "std.char", args, 1, [584 ("std", "char") => parse_args!(context, "std.char", args, 1, [561 0, n: [Val::Num]!!Val::Num, vec![ValType::Num];585 0, n: [Val::Num]!!Val::Num, vec![ValType::Num];562 ], {586 ], {