diff options
author | René Stadler <mail@renestadler.de> | 2008-01-23 11:03:47 +0200 |
---|---|---|
committer | René Stadler <mail@renestadler.de> | 2008-01-23 11:03:47 +0200 |
commit | 6b0edfce7ddd6efa827b4826986c4e1bdb120bcf (patch) | |
tree | b043881d129a7d11b4d54fc3b0b5fa20074c6658 /GstDebugViewer | |
parent | 65ea46a19f4518580e55f65a49d864f3c8fd5104 (diff) |
Replace linear-time filtered index search with usage of bisect module
Diffstat (limited to 'GstDebugViewer')
-rw-r--r-- | GstDebugViewer/GUI.py | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/GstDebugViewer/GUI.py b/GstDebugViewer/GUI.py index 25059d7..7a45ecc 100644 --- a/GstDebugViewer/GUI.py +++ b/GstDebugViewer/GUI.py @@ -30,6 +30,7 @@ import os import os.path from operator import add from sets import Set +from bisect import bisect_right, bisect_left import logging import pygtk @@ -564,19 +565,15 @@ class FilteredLogModel (FilteredLogModelBase): return self.super_index[line_index] - def __filtered_indices_in_range (self, first, end): + def __filtered_indices_in_range (self, start, stop): - # FIXME: Rewrite using bisection! - - if first < 0: - raise ValueError ("first cannot be negative (got %r)" % (first,)) + if start < 0: + raise ValueError ("start cannot be negative (got %r)" % (start,)) - count = 0 - for i in self.super_index: - if i >= first and i < end: - count += 1 + super_start = bisect_left (self.super_index, start) + super_stop = bisect_left (self.super_index, stop) - return count + return super_stop - super_start def super_model_changed_range (self): @@ -1478,7 +1475,6 @@ class LineView (object): if len (line_model): timestamps = [row[line_model.COL_TIME] for row in line_model] row = log_model[(line_index,)] - from bisect import bisect_right position = bisect_right (timestamps, row[line_model.COL_TIME]) else: position = 0 |