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

difftreelog

perf(evaluator) faster std.base64

Лач2020-07-02parent: #ceab885.patch.diff
in: master

4 files changed

modifiedCargo.lockdiffbeforeafterboth
108name = "jrsonnet-evaluator"108name = "jrsonnet-evaluator"
109version = "1.0.0"109version = "1.0.0"
110dependencies = [110dependencies = [
111 "base64",
111 "bincode",112 "bincode",
112 "closure",113 "closure",
113 "indexmap",114 "indexmap",
modifiedcrates/jrsonnet-evaluator/Cargo.tomldiffbeforeafterboth
24jrsonnet-stdlib = { path = "../jrsonnet-stdlib", version = "1.0.0" }24jrsonnet-stdlib = { path = "../jrsonnet-stdlib", version = "1.0.0" }
25indexmap = "1.4.0"25indexmap = "1.4.0"
26md5 = "0.7.0"26md5 = "0.7.0"
27base64 = "0.12.3"
2728
28serde = { version = "1.0.114", optional = true }29serde = { version = "1.0.114", optional = true }
29bincode = { version = "1.3.1", optional = true }30bincode = { version = "1.3.1", optional = true }
modifiedcrates/jrsonnet-evaluator/build.rsdiffbeforeafterboth
35 Member::Field(FieldMember {35 Member::Field(FieldMember {
36 name: FieldName::Fixed(name),36 name: FieldName::Fixed(name),
37 ..37 ..
38 }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals"38 }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals" || **name == *"base64"
39 )39 )
40 })40 })
41 .collect(),41 .collect(),
modifiedcrates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth
565 ], {565 ], {
566 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))566 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))
567 }))?,567 }))?,
568 // faster
569 ("std", "base64") => parse_args!(context, "std.base64", args, 1, [
570 0, input: [Val::Str | Val::Arr], vec![ValType::Arr, ValType::Str];
571 ], {
572 Val::Str(match input {
573 Val::Str(s) => {
574 base64::encode(s.bytes().collect::<Vec<_>>()).into()
575 },
576 Val::Arr(a) => {
577 base64::encode(a.iter().map(|v| {
578 Ok(v.clone().try_cast_num("base64 array")? as u8)
579 }).collect::<Result<Vec<_>>>()?).into()
580 },
581 _ => unreachable!()
582 })
583 }),
568 // faster584 // faster
569 ("std", "join") => noinline!(parse_args!(context, "std.join", args, 2, [585 ("std", "join") => noinline!(parse_args!(context, "std.join", args, 2, [
570 0, sep: [Val::Str|Val::Arr], vec![ValType::Str, ValType::Arr];586 0, sep: [Val::Str|Val::Arr], vec![ValType::Str, ValType::Arr];