私が C とアセンブリを学んでいた頃、速度を上げるには単純な比較を使用する方がよいと教えられました。たとえば、次のように言うとします。
if(x <= 0)
対
if(x < 1)
どちらがより速く実行されますか? 私の議論 (これは間違っているかもしれません) は、比較が 1 つしかないため、ほとんどの場合、2 番目の方が高速に実行されるというものです)。
数値が 0 未満の場合、これは true と同等であるため、最初の実行は高速に実行されますが、等しいかどうかをチェックして 2 番目と同じくらい高速にする必要はありませんが、数値が 0 以上の場合は常に遅くなります。次に、それが 0 に等しいかどうかを確認するために 2 回目の比較を行う必要があります。
私は現在 C# を使用しており、デスクトップ向けの開発速度は問題ではありませんが (少なくとも彼の指摘が議論に値するほどではありません)、モバイル デバイス向けの開発も行っているため、そのような議論を考慮する必要があると思います。デスクトップほど強力ではなく、そのようなデバイスでは速度が問題になります。
さらに検討するために、整数 (10 進数なし) と、-1 や -12,345などの負の数が存在できない数 (エラーがない限り) について話しています。負の数のアイテムがあるが、リストが空かどうかを確認したい (または、問題がある場合は、エラーを示すために x の値を負に設定します。たとえば、リストにいくつかのアイテムがあるが、何らかの理由でリスト全体を取得し、これを示すために数値を負に設定します。これは、アイテムがないと言うことと同じではありません)。
上記の理由で、私は意図的に明らかな部分を省略しました
if(x == 0)
と
if(x.isnullorempty())
およびアイテムのないリストを検出するためのその他のアイテム。
繰り返しになりますが、検討のために、おそらく前述の機能を持つ SQL ストアド プロシージャを使用して、データベースからアイテムを取得する可能性について話しています (つまり、標準 (少なくともこの会社では) は、問題を示すために負の数を返すことです)。
このような場合、上記の 1 番目と 2 番目の項目のどちらを使用するのがよいでしょうか。