]> granicus.if.org Git - python/commitdiff
needforspeed: use PyObject_MALLOC instead of system malloc for small
authorJack Diederich <jackdied@gmail.com>
Sat, 27 May 2006 15:44:34 +0000 (15:44 +0000)
committerJack Diederich <jackdied@gmail.com>
Sat, 27 May 2006 15:44:34 +0000 (15:44 +0000)
allocations.  Use PyMem_MALLOC for larger (1k+) chunks.  1%-2% speedup.

Modules/_sre.c

index 2bab474df81b5b5a408917be6539ea8880a92553..499eae16dbcfcb6b4cd65cf8b3143ce9cda0f1ae 100644 (file)
@@ -254,7 +254,7 @@ static void
 data_stack_dealloc(SRE_STATE* state)
 {
     if (state->data_stack) {
-        free(state->data_stack);
+        PyMem_FREE(state->data_stack);
         state->data_stack = NULL;
     }
     state->data_stack_size = state->data_stack_base = 0;
@@ -270,7 +270,7 @@ data_stack_grow(SRE_STATE* state, int size)
         void* stack;
         cursize = minsize+minsize/4+1024;
         TRACE(("allocate/grow stack %d\n", cursize));
-        stack = realloc(state->data_stack, cursize);
+        stack = PyMem_REALLOC(state->data_stack, cursize);
         if (!stack) {
             data_stack_dealloc(state);
             return SRE_ERROR_MEMORY;
@@ -1163,7 +1163,7 @@ entrance:
                    ctx->pattern[1], ctx->pattern[2]));
 
             /* install new repeat context */
-            ctx->u.rep = (SRE_REPEAT*) malloc(sizeof(*ctx->u.rep));
+            ctx->u.rep = (SRE_REPEAT*) PyObject_MALLOC(sizeof(*ctx->u.rep));
             ctx->u.rep->count = -1;
             ctx->u.rep->pattern = ctx->pattern;
             ctx->u.rep->prev = state->repeat;
@@ -1173,7 +1173,7 @@ entrance:
             state->ptr = ctx->ptr;
             DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]);
             state->repeat = ctx->u.rep->prev;
-            free(ctx->u.rep);
+            PyObject_FREE(ctx->u.rep);
 
             if (ret) {
                 RETURN_ON_ERROR(ret);