gpt4 book ai didi

c - 两条语句中的 strncmp 比一条语句中花费更多时间

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:08 26 4
gpt4 key购买 nike

为了在我的代码中进行文件排序,我使用了 strncmp 来比较每个字符串的第一个元素。

在这里包括我的代码:

代码 1:

for (i = 1; i < file_cnt; )
{
if ((strncmp(info[i-1].name, "1", 1) == 0) &&
(strncmp(info[i].name, "2", 1) == 0))
{
to do....
i += 2;
}
else if ((strncmp(info[i-1].name, "2", 1) == 0) &&
(strncmp(info[i].name, "1", 1) == 0))
{
to do....
i += 2;
}
...
}

代码 2:

for (i = 1; i < file_cnt; )
{
if (strncmp(info[i-1].name, "1", 1) == 0)
{
if (strncmp(info[i].name, "2", 1) == 0)
{
to do....
i += 2;
}
}
else if (strncmp(info[i-1].name, "2", 1) == 0)
{
if (strncmp(info[i].name, "1", 1) == 0)
{
to do....
i += 2;
}
}
...
}

这里的Code 2Code 1花费更多的时间。我正在使用跨平台设备并在其上运行 Code 2 导致我的代码的其他部分出现许多问题。

为什么两个语句比较比单个语句比较花费更多时间?

最佳答案

在代码 1 中,您使用的是 && 运算符。特点是如果第一个表达式(LHS)结果为假,它不会评估第二个表达式。这称为短路评估。因此,如果代码 1 中的第一个表达式为假,它会直接转到 else

此外,您的嵌套 if 语句将生成额外的堆栈帧,这将减慢程序(代码 2)

关于c - 两条语句中的 strncmp 比一条语句中花费更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28062256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com