繁体   English   中英

为什么分配整个Blender数组要比通过迭代分配快得多?

[英]Why is assigning whole Blender array so much faster than assigning through iteration?

我有两个函数都产生随机噪声,但其中一个需要几秒钟完成,另一个运行在几毫秒。 在硬件方面,差异来自哪里? 当我使用第二个函数时,是否并行执行指令? 或是内存中的整个数组移动到存储图像的相应内存数组? 从随机导入随机

def slow_random():
    for i in range(len(bpy.data.images['img'].pixels)):# < pixels are just a list of pixesl color values, where 0 <= value <= 1
        bpy.data.images['img'].pixels[i] = random()

def quick_random():
    rand = [random() for i in range(len(bpy.data.images['img'].pixels))]
    bpy.data.images['img'].pixels[0:] = rand

这是我的混合文件的链接 我不知道它是否安全。 我可以在BlenderStack上发布一个类似的问题,并在1.5小时内上传一个文件。 这里下载,解压缩和启动搅拌机(需要几分钟)。 打开文件,在脚本窗口中,您可以按Alt + P运行它。 取消注释列表末尾的功能。 慢功能将简单地冻结应用程序。

我认为,@ emphner说这是由于__setitem__方法的实现。 因为它必须访问像素,更改其值并重绘它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM