【发布时间】:2022-10-15 17:29:50
【问题描述】:
我必须通过对项目进行多线程处理来从应用程序中获得性能。到目前为止,我尝试创建一个任务来处理 2048 段音频,并且将为每个段创建该任务以独立运行。但是,这种配置意味着要执行数千个任务,这会导致更多的性能问题,更不用说我找不到将现有递归 FFT 转换为迭代 FFT 以保持分段与任务的 1:1 的方法。 继续尝试这样做有什么好处吗?还是我应该更多地考虑在其他地方优化应用程序。
【问题讨论】:
-
我敢打赌,如果 FFT 可以是多线程的,那么有一个 nuget 包可以做到这一点。
-
顺便说一句:您不会使用固定关系段 <=> 任务,而是创建一个工作人员池,这些工作人员不断从列表中获取下一个待办事项并处理它。
-
“通过多线程提高应用程序的性能” - 您应该首先确保现有代码尽可能快。如果您编写代码而不考虑性能,则很可能是震级比它必须要慢。 FFT 是一种常用算法,因此有针对它的高度优化的库。看看 Math.Net 或 intel 性能原语,如果您自己编写 FFT,我猜其中一个会明显更快。
-
@Klamsi 所以基本上将每个 2048 段排队并允许任务/线程提取最旧的可用,处理它,然后将其放入公共输出中,如果我理解你的话
-
@JonasH 会做的,不,我自己没有编写任何代码,这就是我努力解决问题的原因
标签: c# multithreading