summaryrefslogtreecommitdiff
path: root/GstDebugViewer
diff options
context:
space:
mode:
authorRené Stadler <mail@renestadler.de>2008-01-23 11:03:47 +0200
committerRené Stadler <mail@renestadler.de>2008-01-23 11:03:47 +0200
commit6b0edfce7ddd6efa827b4826986c4e1bdb120bcf (patch)
treeb043881d129a7d11b4d54fc3b0b5fa20074c6658 /GstDebugViewer
parent65ea46a19f4518580e55f65a49d864f3c8fd5104 (diff)
Replace linear-time filtered index search with usage of bisect module
Diffstat (limited to 'GstDebugViewer')
-rw-r--r--GstDebugViewer/GUI.py18
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