在计算机体系结构中,Amdahl定律给出了在固定工作负载下执行任务的延迟的理论加速,这可以预期资源得到改善的系统。
var articleIds=['menu_a', 'menu_b', 'menu_c', 'menu_d'];
var visible = $('#menu_a').first();
var show_me = function(article) {
visible.hide();
visible = article;
visible.show();
}
$("#menu_a").click(function(event) {
var id_of_article = $(this).attr('href');
var the_article = $(id_of_article);
show_me(the_article);
even.preventDefault();
});
$('#next').click(function (event)
{
var next;
if (visible.attr('#content') == articleIds[articleIds.length - 1])//article is the last one
next = $('#' + articleIds[0]); //come back to first one
else
next = visible.next();
show_me(next);
event.preventDefault();
});
是执行整个任务的延迟的理论加速;
Slatency
是执行部分任务的延迟加速,可以从系统资源的改进中受益;
s
是整个任务执行时间占改善前系统资源改善的部分的百分比。
p
这都是理论上的,它让我思考,什么时候不适用。估算CPU性能的准确程度如何?
答案 0 :(得分:3)
通常,当你想调整程序的某些部分时,你会制作一个微基准测试来单独测试它。
这并不总是反映出作为完整程序的一部分运行时的行为方式。 (即在你正在调整的部分的执行之间进行其他工作,而不是紧密循环。)
e.g。如果您发现sin(x)
计算成本很高并且将其替换为查找表,那么可能会在微基准测试中获胜,因为当背靠背调用时,足够小的表在高速缓存中保持热,而其间没有其他工作。类似地,微基准测试通过启动分支预测来测量性能,并且没有代码缓存压力(这可以使循环展开看起来比它更好)。
但这只是意味着你对s
的估计是错误的,因为该功能是整个计划的一部分,而不是Amdahl定律不准确。这只是一个错误使用它的情况。
但是,这确实可以回答您的问题:
加速程序的一部分会导致更多缓存或TLB未命中,分支错误预测等其他部分的程序确实违反了Amdahl定律。强>