PERFORCE change 147591 for review

Mayur Shardul mayur at FreeBSD.org
Sat Aug 16 20:35:45 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=147591

Change 147591 by mayur at mayur_freebsd_vm on 2008/08/16 20:35:00

	Benchmarking with preallocation

Affected files ...

.. //depot/projects/soc2008/mayur_vmalgo/uspace/radix_tree.c#4 edit
.. //depot/projects/soc2008/mayur_vmalgo/uspace/rtree_stree.c#4 edit

Differences ...

==== //depot/projects/soc2008/mayur_vmalgo/uspace/radix_tree.c#4 (text+ko) ====

@@ -24,7 +24,10 @@
 /* Default values of the tree parameters */
 #define DEFAULT_BITS_PER_LEVEL 8
 #define DEFAULT_MAX_HEIGHT 4
+#define RESERVED_NODE_COUNT 0xfffff
 
+SLIST_HEAD(, radix_node) res_rnodes_head =
+    SLIST_HEAD_INITIALIZER(res_rnodes_head);
 
 /*
  * init_radix_tree:
@@ -69,6 +72,7 @@
 struct radix_node *
 get_radix_node(struct radix_tree *rtree)
 {
+	/*
 	struct radix_node *rnode;
 	int children_cnt;
 	
@@ -82,6 +86,16 @@
 	bzero(rnode, sizeof(struct radix_node)+
 	    sizeof(void *)*children_cnt);
 	return rnode;
+	*/
+	struct radix_node *rnode;
+
+	if(!SLIST_EMPTY(&res_rnodes_head)){
+		rnode = SLIST_FIRST(&res_rnodes_head);
+		SLIST_REMOVE_HEAD(&res_rnodes_head, next);
+		bzero((void *)rnode, sizeof(struct radix_node));
+		return rnode;
+	}
+	return NULL;
 }
 
 /*
@@ -92,7 +106,8 @@
 void
 put_radix_node( struct radix_node *rnode, struct radix_tree *rtree)
 {
-	free(rnode);
+	//free(rnode);
+	SLIST_INSERT_HEAD(&res_rnodes_head,rnode,next);
 }
 
 /*
@@ -463,3 +478,16 @@
 		rtree->rt_root = NULL;
 	}
 }
+
+
+void radix_tree_init(){
+	int i;
+	char *mem = (char *)malloc(RESERVED_NODE_COUNT * 
+		     sizeof(struct radix_node));
+	for(i = 0; i < RESERVED_NODE_COUNT; i++)
+	{
+		SLIST_INSERT_HEAD(&res_rnodes_head, (struct radix_node *)mem,
+		    next);
+		mem += sizeof(struct radix_node);
+	}
+}

==== //depot/projects/soc2008/mayur_vmalgo/uspace/rtree_stree.c#4 (text+ko) ====

@@ -38,7 +38,7 @@
 	}
 	t_end = rdtsc();
 	printf("TSC difference after lookups: %lld\n", (t_end - t_start));
-	printf("\n\n\nMeasuring time for %d lookup operations on splay tree with"
+	printf("Measuring time for %d lookup operations on splay tree with"
 		" %d elements\n", N, X);
 	t_start = rdtsc();
 	for(i = 0; i < N; i++){
@@ -56,7 +56,7 @@
 	t_end = rdtsc();
 	printf("TSC difference after inserts: %lld\n", (t_end - t_start));
 	printf("Measuring time for %d inserts on splay tree with"
-	       "%d elements\n", N, X);
+	       " %d elements\n", N, X);
 	t = 0;
 	for(i = 0; i < N; i++){
 		t += splay_insert(inserts[i]);


More information about the p4-projects mailing list