我有以下代码(这是用于演示的部分伪代码):
void foo(...){
//some code here
do{
min_item = _MAX_VALUE;
//some code here also
if (min_item == _MAX_VALUE)
break;
if (smaller_item_x == min_item){
FIRST_IS_SMALLER:
global_queue[size++] = smaller_item_x;
if (next_item_x!=0){
smaller_item_x= next_item_x;
if (smaller_item_x > smaller_item_y)
goto SECOND_IS_SMALLER;
}
}else{
SECOND_IS_SMALLER:
global_queue[size++] = smaller_item_y;
if (next_item_y!=0){
smaller_item_y= next_item_y;
if (smaller_item_y > smaller_item_x)
goto FIRST_IS_SMALLER;
}
}
}while(true)
据我所知,goto 在汇编程序中被翻译为 jmp,我有兴趣通过将第二个 goto 更改为类似于分支的内容(较短的命令与短跳转)来提高此过程的性能,我可能会遗漏一些东西,它可能是微不足道的,所以我很抱歉。