私は次のコードを持っています (これはデモ用の部分的な擬似コードです):
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 に変換されていることを知る限り、2 番目の goto をブランチに似たもの (短いジャンプ アップを使用した短いコマンド) に変更することで、この手順のパフォーマンスを向上させることに興味があります。些細なことで、申し訳ありません。