[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40264] branches/bmesh/blender/source/ blender: A couple of trivial perf improvements:

Andrew Wiggin ender79bl at gmail.com
Fri Sep 16 16:28:23 CEST 2011


Revision: 40264
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40264
Author:   ender79
Date:     2011-09-16 14:28:23 +0000 (Fri, 16 Sep 2011)
Log Message:
-----------
A couple of trivial perf improvements:
-BMEMSET macro should cache the size of the memory block instead of reading each iteration
-Avoid tesselating the backup copy of the mesh used to restore after an error (unless there is actually an error)

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2011-09-16 14:28:23 UTC (rev 40264)
@@ -109,11 +109,18 @@
 	*tm2 = *tm;
 	
 	tm2->derivedCage = tm2->derivedFinal = NULL;
-	
-	tm2->looptris = NULL;
+
 	tm2->bm = BM_Copy_Mesh(tm->bm);
-	BMEdit_RecalcTesselation(tm2);
 
+	/*The tesselation is NOT calculated on the copy here,
+	  because currently all the callers of this function use
+	  it to make a backup copy of the BMEditMesh to restore
+	  it in the case of errors in an operation. For perf
+	  reasons, in that case it makes more sense to do the
+	  tesselation only when/if that copy ends up getting
+	  used.*/
+	tm2->looptris = NULL;
+
 	tm2->vert_index = NULL;
 	tm2->edge_index = NULL;
 	tm2->face_index = NULL;

Modified: branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h	2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h	2011-09-16 14:28:23 UTC (rev 40264)
@@ -247,6 +247,6 @@
 #  define BLI_assert(a) (void)0
 #endif
 
-#define BMEMSET(mem, val, size) {unsigned int _i; char *_c = (char*) mem; for (_i=0; _i<size; _i++) *_c++ = val;}
+#define BMEMSET(mem, val, size) {unsigned int _i, _size = (size); char *_c = (char*) mem; for (_i=0; _i<_size; _i++) *_c++ = val;}
 
 #endif // BLI_UTILDEFINES_H

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c	2011-09-16 14:02:44 UTC (rev 40263)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c	2011-09-16 14:28:23 UTC (rev 40264)
@@ -156,6 +156,7 @@
 
 		BMEdit_Free(em);
 		*em = *emcopy;
+		BMEdit_RecalcTesselation(em);
 
 		MEM_freeN(emcopy);
 		em->emcopyusers = 0;




More information about the Bf-blender-cvs mailing list