diff --git a/main.cpp b/main.cpp
index 91f74f793e47b7e7627d2099d3e8445392433205..cec38db6bca6a26ae9b79cb363b2a87e0409b675 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,6 +2,7 @@
 #include <iterator>
 #include <memory>
 #include <vector>
+#include <ctime>
 
 namespace recursive_storage{
 template<class T>
@@ -65,11 +66,11 @@ public:
   {
     for(auto it= std::begin(_childs);it!=std::end(_childs);it++)
       if((*it)->id() == t.id())
-	_childs.erase(it);
+        _childs.erase(it);
 
     for(auto it= std::begin(_bad_childs);it!=std::end(_bad_childs);it++)
       if((*it).lock()->id() == t.id())
-	_bad_childs.erase(it);
+        _bad_childs.erase(it);
   }
 
   void flow_after(std::function<bool(node<T>&)> funct)
@@ -131,7 +132,7 @@ class graph
 private:
   static void erase(node<T>& root , node<T>& to_del)
   {
-    root.flow_after([&to_del](node<T>& t){ int i= t.childs().size(); t.erase_child(to_del); if(i>t.childs().size()) return true; return false; });
+    root.flow_after([&to_del](node<T>& t){ t.erase_child(to_del); return false; });
   }
 
 public:
@@ -205,6 +206,8 @@ public:
 
   void connect(node& n, node& o)
   {
+    if(n.id()==o.id())
+      return;
     bool foundn=false;
     bool foundo=false;
     for(auto& i : nodes)
@@ -347,6 +350,71 @@ void test()
 
 int main()
 {
+  time_t start,end;
+  //std::cout<<localtime(&now)->tm_sec<<std::endl;
+
+  std::cout<<"test1 : create 10000000 1 node graph"<<std::endl;
+  start=time(0);
+  {
+    for(size_t i=0;i<10000000;i++)
+    {
+      local_storage::graph<int> graph{};
+      graph.add_node(6);
+    }
+  }
+  end=time(0);
+  std::cout<<"local_storage: "
+            <<localtime(&end)->tm_min-localtime(&start)->tm_min<<"m"
+            <<localtime(&end)->tm_sec-localtime(&start)->tm_sec<<"s"<<std::endl;
+  start=time(0);
+  {
+    for(size_t i=0;i<10000000;i++)
+    {
+      recursive_storage::node<int> node{6};
+    }
+  }
+  end=time(0);
+  std::cout<<"recursive_storage: "
+            <<localtime(&end)->tm_min-localtime(&start)->tm_min<<"m"
+            <<localtime(&end)->tm_sec-localtime(&start)->tm_sec<<"s";
+
+  std::cout<<"test1 : create 100000 5 node full connected graph"<<std::endl;
+  start=time(0);
+  {
+    for(size_t i=0;i<100000;i++)
+    {
+      local_storage::graph<int> graph{};
+      graph.add_node(6);
+      graph.add_node(6);
+      graph.add_node(6);
+      graph.add_node(6);
+      graph.add_node(6);
+      for(size_t j=0;j<5;j++)
+        for(size_t l=0;l<5;l++)
+          graph.connect(graph[j],graph[l]);
+    }
+  }
+  end=time(0);
+  std::cout<<"local_storage: "
+            <<localtime(&end)->tm_min-localtime(&start)->tm_min<<"m"
+            <<localtime(&end)->tm_sec-localtime(&start)->tm_sec<<"s"<<std::endl;
+  start=time(0);
+  {
+    for(unsigned int i=0;i<100000;i++)
+    {
+      recursive_storage::node<int> node{6};
+      for(size_t j=0;j<4;j++)
+        node.add_child(6);
+      auto& childs= node.childs();
+      for(auto& child:childs)
+        for(auto& child2:childs)
+          child.add_child(child2);
+    }
+  }
+  end=time(0);
+  std::cout<<"recursive_storage: "
+            <<localtime(&end)->tm_min-localtime(&start)->tm_min<<"m"
+            <<localtime(&end)->tm_sec-localtime(&start)->tm_sec<<"s";
   local_storage::graph<int> g{};
   g.add_node(6);
   auto& t2=g.add_node(6);
@@ -356,6 +424,6 @@ int main()
   g.connect(t2,g[0]);
   std::cout<<std::endl<<g.get_childs(t2).size()<<std::endl;
   g.flow_before(g[0],[](local_storage::graph<int>::node& a){std::cout<<a.data()<<":"<<a.id()<<std::endl;});
-  test();
+  //test();
   return 0;
 }