【发布时间】:2021-01-11 17:47:59
【问题描述】:
以一个搜索算法为例,假设它是一个顺序搜索算法。他们说程序检查的条件越少,算法就越快。这里的条件被认为是一些值之间的比较(例如检查值的相等性)。也就是说,如果一个程序中有比较,它确实会影响程序的性能。而且这些比较的次数越多,程序终止的时间就越长。
while(comparison)
{body;}
但我想知道如果没有比较作为条件和一些文字表达式,程序会如何表现,例如:
while(TRUE)
{body;}
问题是:如果按性能进行估计,文字条件和比较条件有何不同?
为了让这个问题更清楚,请考虑以下代码:
while(condition)
{body;}
while(TRUE)
{
if (condition) break;
body;
}
也许第三个也很接近第二个:
char done = 0;
while (!done)
{
if (condition) done++;
else body;
}
如果最快的是哪一个?第二个和第三个的处理速度比第一个慢吗?
【问题讨论】:
-
由于这两段代码根本不等价,我不确定这是一个有意义的比较。是的,第二段代码会更快。它也不起作用。
-
你真的是在比较
while (condition) { body; }和while (1) { if (!condition) break; body; },对吧? -
@pmg 是的,这更合理,我会编辑帖子
-
第三个和另外两个不同,必须是
while (!done) { if (condition) { done++;} else { body; }} -
@mevets 对,已编辑
标签: c performance conditional-statements