From 47a29f33f9255ab5b094666c4267babf40c0e8e9 Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Wed, 16 Jul 2008 17:47:32 +0000 Subject: [PATCH] speed ups --- trunk/ripnews/set/intspan.rb | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/trunk/ripnews/set/intspan.rb b/trunk/ripnews/set/intspan.rb index b343beb..4e7b07b 100644 --- a/trunk/ripnews/set/intspan.rb +++ b/trunk/ripnews/set/intspan.rb @@ -581,18 +581,16 @@ def member?(n) end def insert!(n) - inSet = neg_inf? - - if (@set["edges"].length == 0) + if @set["edges"].empty? @set["edges"] = [n-1, n] return end - if n > @set["edges"][-1]+1 - @set["edges"].push(n-1, n) + if n == @set["edges"][-1]+1 + @set["edges"][-1] += 1 return elsif n > @set["edges"][-1] - @set["edges"][-1] += 1 + @set["edges"].push(n-1, n) return end @@ -611,6 +609,8 @@ def insert!(n) elsif n < @set["edges"][i] r = i i = l + ((r-l)/2) + # tikkeltje sneller dan neg_inf? aanroepen + inSet = @set["negInf"] elsif n == @set["edges"][i] inSet = i.odd? break @@ -629,14 +629,13 @@ def insert!(n) rGap = false if rGap == 0 if ( lGap and rGap) - @set["edges"] = @set["edges"].insert(i, n-1, n) + @set["edges"].insert(i, n-1, n) elsif (not lGap and rGap) @set["edges"][i-1] += 1 elsif ( lGap and not rGap) @set["edges"][i] -= 1 else - @set["edges"].delete_at(i-1) - @set["edges"].delete_at(i-1) + @set["edges"].slice!(i-1, 2) end end @@ -705,9 +704,10 @@ def grep_set(block) sub_edges = [] while (edges.length > 0) - lower = edges[0] - upper = edges[1] - edges = edges.slice(2..edges.length) + lower, upper = edges.slice!(0..1) + #lower = edges[0] + #upper = edges[1] + #edges = edges.slice(2..edges.length) for i in (lower+1..upper) # local $_ = i @@ -733,9 +733,10 @@ def map_set(block) edges = @set["edges"] while (edges.length > 0) - lower = edges[0] - upper = edges[1] - edges = edges.slice(2..edges.length) + lower, upper = edges.slice!(0..1) + #lower = edges[0] + #upper = edges[1] + #edges = edges.slice(2..edges.length) for domain in (lower+1..upper) local $_ = domain;