首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算程序的理论速度?

计算程序的理论速度?
EN

Stack Overflow用户
提问于 2016-08-11 12:29:28
回答 2查看 69关注 0票数 0

我写了两种不同的方法来做同样的事情。我想比较一下哪个会执行得更快。当然,对程序进行基准测试是可能的,但是程序基准测试在不同的机器之间是如何不同的,并且会受到许多外部因素的影响。没有板凳标记,我怎么能计算出哪一个更快?我的想法是,你可以总结程序中所有操作的次数。这是标准做法吗?当你进行基准测试时,似乎有很大的错误空间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-11 15:52:58

我的想法是,你可以总结程序中所有操作的次数。

是的,但除了基准测试之外,其他任何方法都无法轻松、可靠地计算出这些时间。

问题是,这些时候取决于程序(甚至整个系统)之前发生的动态环境。CPU是复杂的野兽,缓存效果(数据缓存和指令缓存)通常是一个主要因素。分支预测也是如此。为什么处理排序数组比处理未排序数组更快?

在汇编语言中对一个小循环进行静态分析是可能的。例如,我可以准确地预测一个简单循环可以在Intel上运行的每一个迭代周期,假设没有缓存错误,基于Agner Fog's显微结构pdf和指令表。超越这一点,就需要越来越多的猜测。

对于花费大量时间优化代码的专家来说,在Ruby这样的高级解释语言中的性能可能是可以预测的,但几乎可以肯定的是,“这将占用这么多微秒时间”,只是“这可能比这稍微快一点或快得多”。

票数 3
EN

Stack Overflow用户

发布于 2016-08-11 14:52:06

算法的复杂性将给你一个理论上的速度比较一个算法。

你的问题是关于一个任意的程序,但一个程序不仅仅是一组算法。

程序的执行速度取决于它正在运行的上下文(I/O、操作系统(多任务处理与否)、硬件)。

因此,除了对一组测量数据进行统计之外,没有其他方法,这是基准测试的定义。

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

https://stackoverflow.com/questions/38896454

复制
相关文章

相似问题

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