diff options
| author | 2018-10-26 03:36:54 +0200 | |
|---|---|---|
| committer | 2018-10-26 03:55:53 +0200 | |
| commit | 76d29eb5912b91f9222c8e542673902fb87d2ae0 (patch) | |
| tree | d5c28f2ec46d2068f371011439f30f13ec3964d9 /askama_derive/src | |
| parent | 7062aabbcbb98bdeacda94071111f0fcc13a918d (diff) | |
| download | askama-76d29eb5912b91f9222c8e542673902fb87d2ae0.tar.gz askama-76d29eb5912b91f9222c8e542673902fb87d2ae0.tar.bz2 askama-76d29eb5912b91f9222c8e542673902fb87d2ae0.zip  | |
Improve bench reducing the number of calls to writer.write_str
Diffstat (limited to 'askama_derive/src')
| -rw-r--r-- | askama_derive/src/generator.rs | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index bc009f9..49c0d02 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -597,18 +597,27 @@ impl<'a> Generator<'a> {      fn write_lit(&mut self, buf: &mut Buffer, lws: &'a str, val: &str, rws: &'a str) {          assert!(self.next_ws.is_none()); -        if !lws.is_empty() { +        let lws_write = if !lws.is_empty() {              if self.skip_ws {                  self.skip_ws = false; +                false              } else if val.is_empty() {                  assert!(rws.is_empty());                  self.next_ws = Some(lws); +                false              } else { -                buf.writeln(&format!("writer.write_str({:#?})?;", lws)); +                true              } -        } +        } else { +            false +        }; +          if !val.is_empty() { -            buf.writeln(&format!("writer.write_str({:#?})?;", val)); +            if lws_write { +                buf.writeln(&format!("writer.write_str({:#?})?;", [lws, val].join(""))); +            } else { +                buf.writeln(&format!("writer.write_str({:#?})?;", val)); +            }          }          if !rws.is_empty() {              self.next_ws = Some(rws);  | 
