【发布时间】:2011-01-13 15:41:49
【问题描述】:
while(some_condition){
if(FIRST)
{
do_this;
}
else
{
do_that;
}
}
在我的程序中,if(FIRST) 成功的可能性约为 10000 分之一。C/C++ 中是否有任何替代方案,这样我们就可以避免在 while 循环内的每次迭代中检查条件,希望看到更好的在这种情况下的表现。
好的!让我更详细地介绍一下。 我正在为信号采集和跟踪方案编写代码,其中我的系统状态将更频繁地保持在 TRACKING 模式而不是 ACQUISITION 模式。
while(signal_present)
{
if(ACQUISITION_SUCCEEDED)
{
do_tracking(); // this functions can change the state from TRACKING to ACQUISITION
}
else
{
do_acquisition(); // this function can change the state from ACQUISITION to TRACKING
}
}
所以这里发生的情况是,系统通常保持在跟踪模式,但在跟踪失败时可以进入采集模式,但这并不常见。(假设传入的数据数量是无限的。)
【问题讨论】:
-
关键是
FIRST是什么? -
鉴于现代 CPU 架构和性能,您可以做的任何可能的优化在软件的整个生命周期中所节省的时间可能比我撰写和发布此评论所花费的时间要少。
-
@David:从所有愚蠢的应用程序和内核代码来看,其中包含丑陋的 gcc
__builtin_expect废话,我觉得这个问题超出了 SO 的范围...... -
@R.. 我想知道什么样的程序在
if语句上存在性能瓶颈;它不能做很多有用的工作! -
@Meeir:你分析过代码吗?配置文件说瓶颈在哪里?
标签: c++ c performance