我正在做一个项目,我需要估算为特定配置的移动设备运行程序的计算时间。
更准确地说,假设我有一个程序,m指令中的n个指令可以并行执行。假设我的电脑具有以下配置:
处理器:2.5GHz核心i 5 RAM:4GB 1600 MHz DDR3 缓存:2MB
基于上述配置或一些其他信息(如果需要),是否有任何等式可以告诉我运行程序需要多长时间?
第二个问题:假设我知道为了在上面提到的配置中执行我的程序,我需要t秒。基于此,我可以估计具有不同配置的设备可能需要多长时间,例如2 GHz核心i5,3GB DDR3 RAM和1 MB缓存?
由于
答案 0 :(得分:0)
这个问题几乎无法回答。变量远远超过指令数量(串行或并行运行)。例如,虚拟内存在起作用吗?如果是这样,您永远不知道您的程序何时会弹出其中一个页面。当你的程序再次需要该页面时。最糟糕的情况是你的网页开始颠簸,你的执行时间一切都很糟糕。
在虚拟内存之后,您需要考虑缓存了多少变量以及它们可能存在的缓存级别。如果您有多个内核和多线程应用程序,则必须处理缓存一致性协议的开销。
虚拟内存操作和数据检索都远远超过指令执行速度远。许多数量级更慢。
即使你把所有这些都从图片中拿出来(给你一个完全没有价值的执行时间值)并且只计算执行指令所需的时间,你就会打开一堆新的蠕虫。首先,您需要知道处理器的CPI(每指令周期数)。
这里的内容是试图仅根据指令数量来预测执行时间几乎是不可能的。第二个问题也是如此。
已编辑添加
我忘记了艾哈迈德的法律。如果你想要一个纯粹的理论方法。你可能想稍微研究一下。关于通过添加更多并行资源可以获得多少速度,有一个非常简单的等式。 Ahmdal's Law