Parcourir la source

Slow but works

Billy Barrow il y a 3 semaines
Parent
commit
7da2871041

+ 7 - 16
src/lib/DataStructures/SortedSeries.vala

@@ -5,7 +5,7 @@ namespace Invercargill.DataStructures {
 
         private class SeriesNode<T> {
             public bool is_red;
-            public Series<T> values { get; private set; }
+            public Vector<T> values { get; private set; }
             public SeriesNode<T> left_child { get; set; }
             public SeriesNode<T> right_child { get; set; }
             public SeriesNode<T> parent { get; set; }
@@ -14,7 +14,7 @@ namespace Invercargill.DataStructures {
                 is_red = true;
                 left_child = nil;
                 right_child = nil;
-                values = new Series<T>();
+                values = new Vector<T>();
                 values.add(item);
             }
 
@@ -22,14 +22,10 @@ namespace Invercargill.DataStructures {
                 is_red = false;
                 left_child = this;
                 right_child = this;
-                values = new Series<T>();
+                values = new Vector<T>();
             }
 
             public T sample() {
-                assert_nonnull (this);
-                assert_nonnull (left_child);
-                assert_nonnull (right_child);
-                assert_nonnull (values);
                 return values.first_or_default();
             }
 
@@ -37,11 +33,6 @@ namespace Invercargill.DataStructures {
                 values.add(value);
             }
 
-            ~SeriesNode() {
-                if(values.count() > 0)
-                    print(@"Byebye $((int)sample())\n");
-            }
-
             //  public void remove_all_values_where (PredicateDelegate<T> predicate) {
             //      values = values.where(v => !predicate(v)).to_buffer();
             //  }
@@ -49,15 +40,15 @@ namespace Invercargill.DataStructures {
 
         private SeriesNode<T> root;
         private SeriesNode<T> nil;
-        private HashSet<SeriesNode<T>> nodes;
         private RWLock rw_lock;
+        private Vector<SeriesNode<T>> node_refs;
         private CompareDelegate<T> comparitor;
         private int n_items;
 
         public SortedSeries(owned CompareDelegate<T>? comparitor = null) {
             nil = new SeriesNode<T>.nil();
-            nodes = new HashSet<SeriesNode<T>> ();
-            nodes.add(nil);
+            node_refs = new Vector<SeriesNode<T>>();
+            node_refs.add(nil);
             root = nil;
             rw_lock = RWLock();
             n_items = 0;
@@ -105,7 +96,7 @@ namespace Invercargill.DataStructures {
             }
 
             var new_node = new SeriesNode<T> (item, nil);
-            nodes.add(new_node);
+            node_refs.add(nil);
             new_node.parent = parent;
             if(parent == null) {
                 root = new_node;

+ 2 - 2
src/tests/Integration/SortedSeries.vala

@@ -16,9 +16,9 @@ void sorted_series_tests() {
     Test.add_func("/invercargill/structure/sorted_series/add_many", () => {
 
         var series = new SortedSeries<int>();
-        var items = range(0, 100000);
+        var items = range(0, 10000);
         series.add_all(items);
-        assert(series.count() == 100000);
+        assert(series.count() == 10000);
 
         series.matches(items, (a, b) => a == b);
     });

+ 1 - 1
src/tests/TestRunner.vala

@@ -25,7 +25,7 @@ public static int main(string[] args) {
     
     Test.run();
     
-    series_speed_test();
+    //  series_speed_test();
     //  vector_speed_test();
     //  set_speed_test();
     //  dictionary_speed_test();