gpt4 book ai didi

c++ - C++:循环优化和循环展开(循环或不循环)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:02 26 4
gpt4 key购买 nike

更新:

讨论超出了我的预期,因此当这个问题浮现在脑海时,我将使用我实际上正在处理的代码进行更新。这是在8到16行代码之间的决定,以确定谁是我的C++类(class)入门的井字游戏的获胜者。

注意:,旨在与类(class)保持一致,

注2: token 是x或o或''的字符)

这是优化的问题。如果这是重复的话,我表示歉意,但我找不到其他答案。

基本上,归结为以下代码是否会更好地循环:

    char CheckForWinner() {

//returns the token of the player that satisfies one of the winning requirements
if (Square[0][0] == Square[0][1] && Square[0][0] == Square[0][2] ) { //If all three tokens in the first row are the same
return Square[0][0]; //Return the token
} else if (Square[1][0] == Square[1][1] && Square[1][0] == Square[1][2] ) { //Check the next row
return Square[1][0]; //Return the token
} else if (Square[2][0] == Square[2][1] && Square[2][0] == Square[2][2] ) {
return Square[2][0];
} else if (Square[0][0] == Square[1][0] && Square[0][0] == Square[2][0] ) { //If no rows satisfy conditions, check columns
return Square[0][0]; //Return the token
} else if (Square[0][1] == Square[1][1] && Square[0][1] == Square[2][1] ) {
return Square[0][1];
} else if (Square[0][2] == Square[1][2] && Square[0][2] == Square[2][2] ) {
return Square[0][2];
} else if (Square[0][0] == Square[1][1] && Square[0][0] == Square[2][2] ) { //finally, check diagonals
return Square[0][0];
} else if (Square[0][2] == Square[1][1] && Square[0][2] == Square[2][0] ) {
return Square[0][2];
}

return ' ';
}

他们只是键入100个提示行,是否对系统造成了一定的负担?

我很好奇,因为似乎不仅我们要执行100条指令行,而且还要向内存分配一个新变量,并迫使计算机处理100个数学方程式并输出数据。

我可以理解,编译器可以提供某种程度的优化,但是我想在更一般的水平上有所了解。首先,我使用VisualStudio 2012或MingGW(g++)进行编译。

最佳答案

您在说的是循环展开。性能折衷是复杂的,并且取决于编译器和执行环境的许多方面。有关问题的讨论,请参见Wikipedia article on loop unwinding

关于c++ - C++:循环优化和循环展开(循环或不循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20321061/

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