git.delta.rocks / jrsonnet / refs/commits / 9d883c6db8a3

difftreelog

perf faster range

Лач2020-07-20parent: #aa3619c.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/build.rsdiffbeforeafterboth
39 if **name == *"join" || **name == *"manifestJsonEx" ||39 if **name == *"join" || **name == *"manifestJsonEx" ||
40 **name == *"escapeStringJson" || **name == *"equals" ||40 **name == *"escapeStringJson" || **name == *"equals" ||
41 **name == *"base64" || **name == *"foldl" || **name == *"foldr" ||41 **name == *"base64" || **name == *"foldl" || **name == *"foldr" ||
42 **name == *"sortImpl"42 **name == *"sortImpl" || **name == *"range"
43 )43 )
44 })44 })
45 .collect(),45 .collect(),
modifiedcrates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth
633 }633 }
634 Ok(Val::Arr(Rc::new(new_arr)))634 Ok(Val::Arr(Rc::new(new_arr)))
635 }))?,635 }))?,
636 // faster
637 ("std", "range") => parse_args!(context, "std.range", args, 2, [
638 0, from: [Val::Num]!!Val::Num, vec![ValType::Num];
639 0, to: [Val::Num]!!Val::Num, vec![ValType::Num];
640 ], {
641 let mut out = Vec::with_capacity((1+to as usize-from as usize).max(0));
642 for i in from as usize..=to as usize {
643 out.push(Val::Num(i as f64));
644 }
645 Val::Arr(Rc::new(out))
646 }),
636 ("std", "char") => parse_args!(context, "std.char", args, 1, [647 ("std", "char") => parse_args!(context, "std.char", args, 1, [
637 0, n: [Val::Num]!!Val::Num, vec![ValType::Num];648 0, n: [Val::Num]!!Val::Num, vec![ValType::Num];
638 ], {649 ], {