首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较算法成本的正确方法

比较算法成本的正确方法
EN

Stack Overflow用户
提问于 2016-04-28 17:40:09
回答 2查看 95关注 0票数 2

比较信号处理算法所需的计算资源的正确方法是什么?

我说的是有错误界限的信号处理算法,资源和响应延迟折衷。

在通过算法实现实现了错误限制和响应延迟之后,我试图比较它的效率。

目前,我正在对不同的算法进行基准测试,向它们提供相同的信号,并使用perf获取任务--用于amd64的时钟/ mseg,但这并不是与体系结构无关的。

工业界使用MFLOPS/Hz来比较处理器,但是我如何包括特定实现的内存(可能是线程)开销?

正确的学术测量标准是什么?

算法X是Y算法的N倍,可以实现具有Q界的P。

编辑:用于上下文的(我正在处理的信号处理算法)是迭代算法,其步长函数可以被O(1)绑定。所以BigO在这里似乎没有用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-28 19:52:35

准确的性能度量并不与体系结构或实现无关。不同的DSP计算平台不仅具有不同的绝对性能数字(MHz/GHz),而且具有不同的MAC或触发器延迟与调度比、内存延迟与带宽比的比值,以及许多其他性能危害(缓存替换与流策略等)。和效率(SMP或矢量调度等)

在古代(VAX,FP系统,56000或更早),原始乘数或MAC计数占所有其他性能限制的主导地位,因此这成为事实上的成本度量。这已不再是现代流水线短矢量FPU多处理器的主导因素,现在甚至在玩具中也很常见。

一种可能是猜测您的算法最可能针对的平台,并在其上进行测量(更可能类似于基于ARM的移动电话或Raspberry系统,而不是AMD桌面IMHO,甚至可能是OpenCL GPU)。

另一种可能是在学术CPU模拟器上运行(RISC V?)您可以打开详细的性能计数器(每种类型的分配操作、内存流量、注册重用危害等等)。这将比任何AMD桌面要精确得多,操作系统任务切换、TLB/MMU错过,缓存初始化和通信量的变化都可能导致任何性能测量中的各种未知变化。

票数 1
EN

Stack Overflow用户

发布于 2016-04-28 17:46:29

对此有多种正确的答案。你至少应该考虑这两点:

  • 计算机科学使用O符号 -通常用来测量处理需求,但它只是数学,也可以应用于内存。
  • 正如您所做的那样,基准测试是测试实现的正确方法。但是您需要做一个多元分析(即在不同的平台、输入大小等上进行测试)。

原则上,平台只应是一个不变的因素。但在实践中,不变的因素可能是相关的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36921832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档