有效地初始化Cython Memoryview

伦敦罗伯

我目前MemoryView在我的Cythonpyx文件中设置,如下所示:

@cython.boundscheck(False)
cdef int[:] fill_memview():
    # This happens inside a big loop so needs to be fast
    cdef int[:] x = np.empty(10)
    for i in range(10):
        x[i] = i
    return x

cdef stupid_loop():
    for i in range(10000):
        fill_memview()

当我编译pyx文件时,cython -a foo.pyx该行cdef int[:] x = np.empty(10)显示为带注释的html深黄色注释文件(这意味着它有许多Python调用使速度变慢)。

如何更好地使键入的Memoryview实例化?

布莱克·沃尔什

请参阅此答案以比较不同方式分配内存。如果您的需求很简单(只需建立索引),请特别注意“ cpython.array raw C类型”,则可以创建一个cpython数组以快速创建,然后as_ints[i]用于快速不安全索引,或者如果确实需要内存视图,则使用内存cpython数组上的视图比numpy数组快3倍。

如果不对代码的用途有更全面的了解,很难提供更具体的建议。例如,如果可能的话,使用二维数组会更好,因为分配一个大块的内存往往比分配许多小块的效率更高,例如,制作许多小块的内存视图切片会更快。一个大内存视图具有大量分配的内存,而不是创建一堆小内存视图,每个视图都有自己的小块分配内存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Cython Memoryview 段错误

Cython Memoryview中的数组广播

Cython memoryviews错误:指定的memoryview索引无效

如何在Julia中有效地初始化巨大的稀疏数组?

如何在Java中有效地使用常量值初始化数组

如何使用EF Code First有效地初始化大种子?

有效地根据属性B和C初始化属性A

更加有效地初始化数组保持结构

有效地初始化多个numpy数组

在循环中检查两个memoryview的有效方法是什么?

Cython中的Memoryview切片要求标量

Cython中动态数组的2D MemoryView

Cython-动态2D C ++数组的Memoryview

从 numpy 数组(memoryview)读取函数的 Cython prange 冻结,为什么?

Cython:了解具有indirect_contignuous内存布局的类型化memoryview

Dart:如何有效地初始化依赖于同一计算的多个final字段?

是否可以有效地使用非零值初始化字节数组?

如何使用csv文件有效地在iOS / Core Data应用程序中初始化数据?

Cython:从类型化的memoryview数组中读取值的最快方法是什么?

如何为具有相同cython memoryview的许多视图的对象腌制

使用MemoryView时有关NPY_NO_DEPRECATED_API的Cython Numpy警告

如何防止Cython中的__Pyx_MemoryView_Len(__ pyx_v_a)Python交互

Python Memoryview与Bytearray吗?

python memoryview 比预期慢

如何有效地使Graphviz图形动画化?

在纯Python中转置`memoryview`

如何在 Cython 中有效地使用 Python 风格的整数?

C ++-初始化结构的有效方法

初始化Clojure中大向量的有效方法