Author: Alex Gaynor <[email protected]>
Branch: 
Changeset: r49893:56290d9adb6d
Date: 2011-11-28 06:24 -0500
http://bitbucket.org/pypy/pypy/changeset/56290d9adb6d/

Log:    use memcpy for numpy.array.copy(), rather than going through the
        constructor

diff --git a/pypy/module/micronumpy/interp_numarray.py 
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -4,7 +4,7 @@
 from pypy.interpreter.typedef import TypeDef, GetSetProperty
 from pypy.module.micronumpy import interp_ufuncs, interp_dtype, signature
 from pypy.rlib import jit
-from pypy.rpython.lltypesystem import lltype
+from pypy.rpython.lltypesystem import lltype, rffi
 from pypy.tool.sourcetools import func_with_new_name
 from pypy.rlib.rstring import StringBuilder
 from pypy.rlib.objectmodel import instantiate
@@ -521,7 +521,10 @@
         return space.wrap(self.find_size())
 
     def descr_copy(self, space):
-        return space.call_function(space.gettypefor(BaseArray), self, 
self.find_dtype())
+        concrete = self.get_concrete()
+        array = NDimArray(concrete.size, concrete.shape[:], concrete.dtype, 
concrete.order)
+        rffi.c_memcpy(array.storage, concrete.storage, array.size * 
array.dtype.num_bytes)
+        return array
 
     def descr_len(self, space):
         return self.get_concrete().descr_len(space)
@@ -1239,7 +1242,7 @@
 
 class W_FlatIterator(ViewArray):
     signature = signature.BaseSignature()
-    
+
     @jit.unroll_safe
     def __init__(self, arr):
         size = 1
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to