Revision: 54568
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54568&view=rev
Author:   brlcad
Date:     2013-03-08 15:38:35 +0000 (Fri, 08 Mar 2013)
Log Message:
-----------
undo the usage of richard's pooling memory interface underneath NMG.  direct 
profiling of the implementation showed it to be an order of magnitude slower 
than bu_malloc/calloc, 50M allocations went from 5s to 70s-90s.

Modified Paths:
--------------
    brlcad/trunk/include/nmg.h
    brlcad/trunk/src/librt/primitives/nmg/nmg_copy.c

Modified: brlcad/trunk/include/nmg.h
===================================================================
--- brlcad/trunk/include/nmg.h  2013-03-08 15:32:49 UTC (rev 54567)
+++ brlcad/trunk/include/nmg.h  2013-03-08 15:38:35 UTC (rev 54568)
@@ -548,12 +548,16 @@
  * OBSOLETE
  */
 #define NMG_FREESTRUCT(ptr, str) { \
+    BU_PUT(ptr, struct str); \
+    (ptr) = NULL; \
+}
+#if 0
     memset((char *)(ptr), 0, sizeof(struct str)); \
     BU_PUT((ptr), struct str); \
-    (ptr) = NULL; \
-}
 
+#endif
 
+
 /*
  * Macros to create and destroy storage for the NMG data structures.
  * Since nmg_mk.c and g_nmg.c are the only source file which should
@@ -564,7 +568,7 @@
 #define NMG_INCR_INDEX(_p, _m) \
        NMG_CK_MODEL(_m); (_p)->index = ((_m)->maxindex)++
 
-#if 1
+#if 0
 #define GET_REGION(p, m)            {p = (struct nmgregion 
*)bu_pool_get(sizeof(struct nmgregion)); NMG_INCR_INDEX(p, m);}
 #define GET_REGION_A(p, m)          {p = (struct nmgregion_a 
*)bu_pool_get(sizeof(struct nmgregion_a)); NMG_INCR_INDEX(p, m);}
 #define GET_SHELL(p, m)             {p = (struct shell 
*)bu_pool_get(sizeof(struct shell)); NMG_INCR_INDEX(p, m);}
@@ -610,7 +614,7 @@
 #define GET_VERTEXUSE_A_CNURB(p, m) {NMG_GETSTRUCT(p, vertexuse_a_cnurb); 
NMG_INCR_INDEX(p, m);}
 #endif
 
-#if 1
+#if 0
 #define FREE_MODEL(p)             NMG_FREESTRUCT(p, model)
 #define FREE_REGION(p)            {bu_pool_put((void *)p, sizeof(struct 
nmgregion));}
 #define FREE_REGION_A(p)          {bu_pool_put((void *)p, sizeof(struct 
nmgregion_a));}

Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_copy.c
===================================================================
--- brlcad/trunk/src/librt/primitives/nmg/nmg_copy.c    2013-03-08 15:32:49 UTC 
(rev 54567)
+++ brlcad/trunk/src/librt/primitives/nmg/nmg_copy.c    2013-03-08 15:38:35 UTC 
(rev 54568)
@@ -35,15 +35,12 @@
 #include "raytrace.h"
 
 
-#define NMG_COPY_GETSTRUCT(p, str) (p = (struct str 
*)bu_pool_get(sizeof(struct str)))
-
-
 static struct nmgregion_a *
 nmg_construct_region_a(const struct nmgregion_a *original, genptr_t 
*structArray)
 {
     struct nmgregion_a *ret;
 
-    NMG_COPY_GETSTRUCT(ret, nmgregion_a);
+    NMG_GETSTRUCT(ret, nmgregion_a);
 
     ret->magic = NMG_REGION_A_MAGIC;
 
@@ -62,7 +59,7 @@
 {
     struct nmgregion *ret;
 
-    NMG_COPY_GETSTRUCT(ret, nmgregion);
+    NMG_GETSTRUCT(ret, nmgregion);
 
     ret->l.magic = NMG_REGION_MAGIC;
     ret->m_p     = parent;
@@ -92,7 +89,7 @@
 {
     struct face_g_plane *ret;
 
-    NMG_COPY_GETSTRUCT(ret, face_g_plane);
+    NMG_GETSTRUCT(ret, face_g_plane);
 
     ret->magic = NMG_FACE_G_PLANE_MAGIC;
 
@@ -111,7 +108,7 @@
 {
     struct face_g_snurb *ret;
 
-    NMG_COPY_GETSTRUCT(ret, face_g_snurb);
+    NMG_GETSTRUCT(ret, face_g_snurb);
 
     ret->l.magic = NMG_FACE_G_SNURB_MAGIC;
 
@@ -151,7 +148,7 @@
 {
     struct face *ret;
 
-    NMG_COPY_GETSTRUCT(ret, face);
+    NMG_GETSTRUCT(ret, face);
 
     ret->l.magic   = NMG_FACE_MAGIC;
     ret->fu_p      = parent;
@@ -192,7 +189,7 @@
 {
     struct vertex_g *ret;
 
-    NMG_COPY_GETSTRUCT(ret, vertex_g);
+    NMG_GETSTRUCT(ret, vertex_g);
 
     ret->magic = NMG_VERTEX_G_MAGIC;
 
@@ -210,7 +207,7 @@
 {
     struct vertex *ret;
 
-    NMG_COPY_GETSTRUCT(ret, vertex);
+    NMG_GETSTRUCT(ret, vertex);
 
     ret->magic = NMG_VERTEX_MAGIC;
 
@@ -236,7 +233,7 @@
 {
     struct vertexuse_a_plane *ret;
 
-    NMG_COPY_GETSTRUCT(ret, vertexuse_a_plane);
+    NMG_GETSTRUCT(ret, vertexuse_a_plane);
 
     ret->magic            = NMG_VERTEXUSE_A_PLANE_MAGIC;
 
@@ -254,7 +251,7 @@
 {
     struct vertexuse_a_cnurb *ret;
 
-    NMG_COPY_GETSTRUCT(ret, vertexuse_a_cnurb);
+    NMG_GETSTRUCT(ret, vertexuse_a_cnurb);
 
     ret->magic            = NMG_VERTEXUSE_A_CNURB_MAGIC;
 
@@ -272,7 +269,7 @@
 {
     struct vertexuse *ret;
 
-    NMG_COPY_GETSTRUCT(ret, vertexuse);
+    NMG_GETSTRUCT(ret, vertexuse);
 
     ret->l.magic            = NMG_VERTEXUSE_MAGIC;
     ret->up.magic_p         = parent;
@@ -317,7 +314,7 @@
 {
     struct edge *ret;
 
-    NMG_COPY_GETSTRUCT(ret, edge);
+    NMG_GETSTRUCT(ret, edge);
 
     ret->magic              = NMG_EDGE_MAGIC;
     ret->eu_p               = parent;
@@ -334,7 +331,7 @@
 {
     struct edge_g_lseg *ret;
 
-    NMG_COPY_GETSTRUCT(ret, edge_g_lseg);
+    NMG_GETSTRUCT(ret, edge_g_lseg);
 
     ret->l.magic = NMG_EDGE_G_LSEG_MAGIC;
 
@@ -355,7 +352,7 @@
 {
     struct edge_g_cnurb *ret;
 
-    NMG_COPY_GETSTRUCT(ret, edge_g_cnurb);
+    NMG_GETSTRUCT(ret, edge_g_cnurb);
 
     ret->l.magic = NMG_EDGE_G_CNURB_MAGIC;
 
@@ -385,7 +382,7 @@
 {
     struct edgeuse *ret;
 
-    NMG_COPY_GETSTRUCT(ret, edgeuse);
+    NMG_GETSTRUCT(ret, edgeuse);
 
     ret->l.magic = NMG_EDGEUSE_MAGIC;
 
@@ -466,7 +463,7 @@
 {
     struct loop_g *ret;
 
-    NMG_COPY_GETSTRUCT(ret, loop_g);
+    NMG_GETSTRUCT(ret, loop_g);
 
     ret->magic = NMG_LOOP_G_MAGIC;
 
@@ -485,7 +482,7 @@
 {
     struct loop *ret;
 
-    NMG_COPY_GETSTRUCT(ret, loop);
+    NMG_GETSTRUCT(ret, loop);
 
     ret->magic              = NMG_LOOP_MAGIC;
     ret->lu_p               = parent;
@@ -509,7 +506,7 @@
 {
     struct loopuse *ret;
 
-    NMG_COPY_GETSTRUCT(ret, loopuse);
+    NMG_GETSTRUCT(ret, loopuse);
 
     ret->l.magic     = NMG_LOOPUSE_MAGIC;
     ret->up.magic_p  = parent;
@@ -576,7 +573,7 @@
     struct faceuse       *ret;
     const struct loopuse *originalLoopUse;
 
-    NMG_COPY_GETSTRUCT(ret, faceuse);
+    NMG_GETSTRUCT(ret, faceuse);
 
     ret->l.magic     = NMG_FACEUSE_MAGIC;
     ret->s_p         = parent;
@@ -622,7 +619,7 @@
 {
     struct shell_a *ret;
 
-    NMG_COPY_GETSTRUCT(ret, shell_a);
+    NMG_GETSTRUCT(ret, shell_a);
 
     ret->magic = NMG_SHELL_A_MAGIC;
 
@@ -644,7 +641,7 @@
     const struct loopuse *originalLoopUse;
     const struct edgeuse *originalEdgeUse;
 
-    NMG_COPY_GETSTRUCT(ret, shell);
+    NMG_GETSTRUCT(ret, shell);
 
     ret->l.magic = NMG_SHELL_MAGIC;
     ret->r_p     = parent;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to