Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 分析和优化PureData修补程序和外部_Optimization_Profiling_Puredata - Fatal编程技术网

Optimization 分析和优化PureData修补程序和外部

Optimization 分析和优化PureData修补程序和外部,optimization,profiling,puredata,Optimization,Profiling,Puredata,我一直在研制一个用Pd制作的合成器,并在计算机上运行。为此,我写了一些抽象和两个外部。现在,synth是单声道的,启动时使用100%的CPU,造成许多可听见的咔哒声和伪影。大约5秒后,它“稳定”到75%的CPU,延迟和声音都非常好 现在,我需要使synth合成音,这样CPU时间就可以用来处理额外的声音了。为此,我正在考虑使用调试符号构建Pd,并通过Callgrind/KCacheGrind等探查器运行我的修补程序,以尝试找出CPU消耗最多的地方,并围绕这一点进行优化 任何人都可以分享用于优化Pd

我一直在研制一个用Pd制作的合成器,并在计算机上运行。为此,我写了一些抽象和两个外部。现在,synth是单声道的,启动时使用100%的CPU,造成许多可听见的咔哒声和伪影。大约5秒后,它“稳定”到75%的CPU,延迟和声音都非常好

现在,我需要使synth合成音,这样CPU时间就可以用来处理额外的声音了。为此,我正在考虑使用调试符号构建Pd,并通过Callgrind/KCacheGrind等探查器运行我的修补程序,以尝试找出CPU消耗最多的地方,并围绕这一点进行优化


任何人都可以分享用于优化Pd补丁和外部的技术或技巧吗?对于此类任务,是否有专门针对Pd的工具?我的方法是否有效?当然可以选择使用成熟的探查器工具。 主要的缺点是,它们会大大降低系统的速度,因此您可能需要一个完全自动化的测试用例(而不是依赖于环境的实时性)

至于补丁内评测,Pd提供的最佳对象是
[realtime]
对象,您可以使用该对象测量在消息域中执行特定操作所需的时间(挂钟时间,而不是逻辑时间,该时间应为零)。但是,这不适用于信号对象

下面是一个示例,用于分析子树(在
[pd complex]
子批次中)和一些选定对象(在
[pd complex]
子批次中)的完整执行情况

根据您的描述,您的补丁在初始化过程中似乎花费了很多时间(CPU的最大化,因此需要一段时间才能降到100%以下),这很可能表明消息域中存在问题


至于信号域,典型的问题包括重新锁定到小的块大小(
[block~1]
),以及计算未使用的语音(如果它们添加到信号输出中,请使用
[switch~]
将其关闭)。

您的补丁执行起来似乎很繁重。这意味着,当你运行合成器时,你随时都在进行大量的计算。这是什么样的合成器

通常,一种降低计算成本的方法是固定值,先计算,一劳永逸。(例如,如果总是使用相同的值,那么在数组中读取它而不是在任何时候计算它可能会很有趣)。 您可以告诉我们更多关于您的程序架构的信息,也许我们可以更具体地帮助您

祝你好运