difftreelog
perf faster foldl, foldr
in: master
2 files changed
crates/jrsonnet-evaluator/build.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/build.rs
+++ b/crates/jrsonnet-evaluator/build.rs
@@ -35,7 +35,10 @@
Member::Field(FieldMember {
name: FieldName::Fixed(name),
..
- }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals" || **name == *"base64"
+ })
+ if **name == *"join" || **name == *"manifestJsonEx" ||
+ **name == *"escapeStringJson" || **name == *"equals" ||
+ **name == *"base64" || **name == *"foldl" || **name == *"foldr"
)
})
.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 ], {