mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-21 07:46:38 +00:00
Replace linear-time filtered index search with usage of bisect module
This commit is contained in:
parent
e971bda1ae
commit
9fe8b55ecb
1 changed files with 7 additions and 11 deletions
|
@ -30,6 +30,7 @@ import os
|
||||||
import os.path
|
import os.path
|
||||||
from operator import add
|
from operator import add
|
||||||
from sets import Set
|
from sets import Set
|
||||||
|
from bisect import bisect_right, bisect_left
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import pygtk
|
import pygtk
|
||||||
|
@ -564,19 +565,15 @@ class FilteredLogModel (FilteredLogModelBase):
|
||||||
|
|
||||||
return self.super_index[line_index]
|
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 start < 0:
|
||||||
|
raise ValueError ("start cannot be negative (got %r)" % (start,))
|
||||||
|
|
||||||
if first < 0:
|
super_start = bisect_left (self.super_index, start)
|
||||||
raise ValueError ("first cannot be negative (got %r)" % (first,))
|
super_stop = bisect_left (self.super_index, stop)
|
||||||
|
|
||||||
count = 0
|
return super_stop - super_start
|
||||||
for i in self.super_index:
|
|
||||||
if i >= first and i < end:
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
return count
|
|
||||||
|
|
||||||
def super_model_changed_range (self):
|
def super_model_changed_range (self):
|
||||||
|
|
||||||
|
@ -1478,7 +1475,6 @@ class LineView (object):
|
||||||
if len (line_model):
|
if len (line_model):
|
||||||
timestamps = [row[line_model.COL_TIME] for row in line_model]
|
timestamps = [row[line_model.COL_TIME] for row in line_model]
|
||||||
row = log_model[(line_index,)]
|
row = log_model[(line_index,)]
|
||||||
from bisect import bisect_right
|
|
||||||
position = bisect_right (timestamps, row[line_model.COL_TIME])
|
position = bisect_right (timestamps, row[line_model.COL_TIME])
|
||||||
else:
|
else:
|
||||||
position = 0
|
position = 0
|
||||||
|
|
Loading…
Reference in a new issue