Revision: 43637
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43637
Author:   campbellbarton
Date:     2012-01-23 13:51:44 +0000 (Mon, 23 Jan 2012)
Log Message:
-----------
replace BLI_array_growone() with BLI_array_growitems() when the size of the 
increase is known ahead of time, will reduce reallocs and give some speedup.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/editors/mesh/loopcut.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c       
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c       
2012-01-23 13:51:44 UTC (rev 43637)
@@ -1112,8 +1112,8 @@
                        for (i=0; i<dm->numPolyData; i++, mp++) {
                                ml = mloop + mp->loopstart;
 
-                               for (j=0; j<mp->totloop; j++, ml++, totloop++) {
-                                       BLI_array_growone(wtcol_l);
+                               BLI_array_growitems(wtcol_l, mp->totloop);
+                               for (j = 0; j < mp->totloop; j++, ml++, 
totloop++) {
                                        copy_v4_v4_char((char 
*)&wtcol_l[totloop],
                                                        (char *)&wtcol_v[4 * 
ml->v]);
                                }

Modified: 
branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c   
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c   
2012-01-23 13:51:44 UTC (rev 43637)
@@ -171,10 +171,11 @@
                BLI_array_empty(verts);
                BLI_array_empty(edges);
 
+               BLI_array_growitems(verts, mp->totloop);
+               BLI_array_growitems(edges, mp->totloop);
+
                ml = mloop + mp->loopstart;
-               for (j=0; j<mp->totloop; j++, ml++) {
-                       BLI_array_growone(verts);
-                       BLI_array_growone(edges);
+               for (j = 0; j < mp->totloop; j++, ml++) {
 
                        verts[j] = vtable[ml->v];
                        edges[j] = etable[ml->e];

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c       
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c       
2012-01-23 13:51:44 UTC (rev 43637)
@@ -3040,17 +3040,16 @@
                /* set the face base vert */
                *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum;
 
-               BLI_array_empty(loopidx);               
-               for (s=0; s<numVerts; s++) {
-                       BLI_array_growone(loopidx);
+               BLI_array_empty(loopidx);
+               BLI_array_growitems(loopidx, numVerts);
+               for (s = 0; s < numVerts; s++) {
                        loopidx[s] = loopindex++;
                }
                
                BLI_array_empty(vertidx);
-                               for(s = 0; s < numVerts; s++) {
+               BLI_array_growitems(vertidx, numVerts);
+               for (s = 0; s < numVerts; s++) {
                        CCGVert *v = ccgSubSurf_getFaceVert(ss, f, s);
-                       
-                       BLI_array_growone(vertidx);
                        vertidx[s] = 
GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v));
                }
                

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2012-01-23 13:51:44 UTC (rev 43637)
@@ -528,10 +528,11 @@
 
                BLI_array_empty(loops);
                BLI_array_empty(edges);
+               BLI_array_growitems(loops, f->len);
+               BLI_array_growitems(edges, f->len);
+
                l = BMIter_New(&liter, bmold, BM_LOOPS_OF_FACE, f);
                for (j=0; j<f->len; j++, l = BMIter_Step(&liter)) {
-                       BLI_array_growone(loops);
-                       BLI_array_growone(edges);
                        loops[j] = l;
                        edges[j] = etable[BM_GetIndex(l->e)];
                }

Modified: branches/bmesh/blender/source/blender/editors/mesh/loopcut.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/loopcut.c        
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/editors/mesh/loopcut.c        
2012-01-23 13:51:44 UTC (rev 43637)
@@ -239,10 +239,10 @@
                                co[1][0] = (v[1][1]->co[0] - 
v[1][0]->co[0])*(i/((float)previewlines+1))+v[1][0]->co[0];
                                co[1][1] = (v[1][1]->co[1] - 
v[1][0]->co[1])*(i/((float)previewlines+1))+v[1][0]->co[1];
                                co[1][2] = (v[1][1]->co[2] - 
v[1][0]->co[2])*(i/((float)previewlines+1))+v[1][0]->co[2];                     
                   
-                               
+
                                BLI_array_growone(edges);
-                               VECCOPY(edges[tot][0], co[0]);
-                               VECCOPY(edges[tot][1], co[1]);
+                               copy_v3_v3(edges[tot][0], co[0]);
+                               copy_v3_v3(edges[tot][1], co[1]);
                                tot++;
                        }
                }

Modified: branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c  
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/editors/uvedit/uvedit_draw.c  
2012-01-23 13:51:44 UTC (rev 43637)
@@ -187,12 +187,12 @@
                                
                                BLI_array_empty(tf_uv);
                                BLI_array_empty(tf_uvorig);
-                               
+                               BLI_array_growitems(tf_uv, efa->len);
+                               BLI_array_growitems(tf_uvorig, efa->len);
+
                                i = 0;
                                BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, 
efa) {
                                        luv= 
CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
-                                       BLI_array_growone(tf_uv);
-                                       BLI_array_growone(tf_uvorig);
 
                                        tf_uvorig[i][0] = luv->uv[0];
                                        tf_uvorig[i][1] = luv->uv[1];
@@ -238,12 +238,12 @@
 
                                                BLI_array_empty(tf_uv);
                                                BLI_array_empty(tf_uvorig);
+                                               BLI_array_growitems(tf_uv, 
efa->len);
+                                               BLI_array_growitems(tf_uvorig, 
efa->len);
 
                                                i = 0;
                                                BM_ITER(l, &liter, em->bm, 
BM_LOOPS_OF_FACE, efa) {
                                                        luv= 
CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV);
-                                                       
BLI_array_growone(tf_uv);
-                                                       
BLI_array_growone(tf_uvorig);
 
                                                        tf_uvorig[i][0] = 
luv->uv[0];
                                                        tf_uvorig[i][1] = 
luv->uv[1];

Modified: branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c   
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c   
2012-01-23 13:51:44 UTC (rev 43637)
@@ -1953,9 +1953,9 @@
                }
 
                /* mark 1 vertex as being hit */
+               BLI_array_growitems(hitv, hit.efa->len);
+               BLI_array_growitems(hituv, hit.efa->len);
                for(i=0; i<hit.efa->len; i++) {
-                       BLI_array_growone(hitv);
-                       BLI_array_growone(hituv);
                        hitv[i]= 0xFFFFFFFF;
                }
 
@@ -1974,9 +1974,9 @@
                }
 
                /* mark 2 edge vertices as being hit */
-               for(i=0; i<hit.efa->len; i++) {
-                       BLI_array_growone(hitv);
-                       BLI_array_growone(hituv);
+               BLI_array_growitems(hitv,  hit.efa->len);
+               BLI_array_growitems(hituv, hit.efa->len);
+               for (i=0; i < hit.efa->len; i++) {
                        hitv[i]= 0xFFFFFFFF;
                }
 
@@ -2002,12 +2002,12 @@
                BM_set_actFace(em->bm, hit.efa);
 
                /* mark all face vertices as being hit */
+
+               BLI_array_growitems(hitv,  hit.efa->len);
+               BLI_array_growitems(hituv, hit.efa->len);
                i = 0;
                BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, hit.efa) {
                        luv = CustomData_bmesh_get(&em->bm->ldata, 
l->head.data, CD_MLOOPUV);
-
-                       BLI_array_growone(hitv);
-                       BLI_array_growone(hituv);
                        hituv[i]= luv->uv;
                        hitv[i] = BM_GetIndex(l->v);
                        i++;

Modified: 
branches/bmesh/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c    
2012-01-23 13:50:00 UTC (rev 43636)
+++ branches/bmesh/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c    
2012-01-23 13:51:44 UTC (rev 43637)
@@ -1409,16 +1409,14 @@
        BMLoop *l;
        BMIter liter;
        MLoopUV *luv;
-       BLI_array_declare(uvs);
        float **uvs = NULL;
+       BLI_array_fixedstack_declare(uvs, BM_NGON_STACK_SIZE, efa->len, 
__func__);
        float dx;
        int i, mi;
 
        i = 0;
        BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) {
                luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, 
CD_MLOOPUV);
-               BLI_array_growone(uvs);
-
                uvs[i] = luv->uv;
                i++;
        }
@@ -1435,7 +1433,7 @@
                } 
        } 
 
-       BLI_array_free(uvs);
+       BLI_array_fixedstack_free(uvs);
 }
 
 static int sphere_project_exec(bContext *C, wmOperator *op)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to