From faeac766077da006a7808a5f31139fdad4fc6621 Mon Sep 17 00:00:00 2001 From: daa84 Date: Thu, 14 Sep 2017 18:34:08 +0300 Subject: [PATCH] Speed optimization --- src/render/mod.rs | 12 +++++------- src/ui_model/line.rs | 9 --------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/render/mod.rs b/src/render/mod.rs index 44ddc99..79e6ac5 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -38,9 +38,7 @@ pub fn render( let mut line_x = 0.0; let RowView { line, row, line_y, .. } = cell_view; - for col in 0..line.line.len() { - let cell = &line.line[col]; - + for (col, cell) in line.line.iter().enumerate() { draw_cell(&cell_view, color_model, cell, col, line_x); @@ -172,9 +170,9 @@ pub fn shape_dirty( let items = ctx.itemize(&styled_line); line.merge(&styled_line, &items); - for i in 0..line.line.len() { - if line[i].dirty { - if let Some(item) = line.get_item_mut(i) { + for (col, cell) in line.line.iter_mut().enumerate() { + if cell.dirty { + if let Some(item) = line.item_line[col].as_mut() { let mut glyphs = pango::GlyphString::new(); { let analysis = item.analysis(); @@ -192,7 +190,7 @@ pub fn shape_dirty( } } - line[i].dirty = false; + cell.dirty = false; } line.dirty_line = false; diff --git a/src/ui_model/line.rs b/src/ui_model/line.rs index 587895c..07b6452 100644 --- a/src/ui_model/line.rs +++ b/src/ui_model/line.rs @@ -158,15 +158,6 @@ impl Line { self.item_line[start_cell] = Some(Item::new(new_item.clone(), end_cell - start_cell + 1)); } - pub fn get_item_mut(&mut self, cell_idx: usize) -> Option<&mut Item> { - let item_idx = self.cell_to_item(cell_idx); - if item_idx >= 0 { - self.item_line[item_idx as usize].as_mut() - } else { - None - } - } - pub fn get_item(&self, cell_idx: usize) -> Option<&Item> { let item_idx = self.cell_to_item(cell_idx); if item_idx >= 0 {