1. ホーム
  2. performance

[解決済み] 開発者は読みやすさとパフォーマンスのどちらを優先させるべきか?[クローズド]

2023-01-21 22:42:44

質問

開発者はしばしば、ある問題を解決するために、慣用的で読みやすい方法と、直感的ではないが性能の良い方法の二者択一を迫られることがある。 たとえば、C ベースの言語では、数を 2 倍にする方法は 2 つあります。

int SimpleMultiplyBy2(int x)
{
    return x * 2; 
}

int FastMultiplyBy2(int x)
{
    return x << 1;
}

最初のバージョンは技術的な読者にも非技術的な読者にも手に取りやすくなっていますが、ビットシフトは乗算よりも単純な操作なので、2番目のバージョンの方がパフォーマンスが高いかもしれません。 (とりあえず、コンパイラのオプティマイザがこれを検出して最適化することはないだろうと仮定しておきますが、それも考慮の余地があります)。

開発者として、最初の試みとしてはどちらが良いでしょうか?

どのように解決するのですか?

1つ見逃しています。

まず正しさのためにコードを書き、次に明瞭さのためにコードを書きます (もちろん、この 2 つはしばしば関連しています!)。 最後に、そして実際に必要であるという経験的な証拠がある場合にのみ、最適化を検討することができます。 早まった最適化は、本当に悪いことです。 最適化は、ほとんどの場合、時間、明快さ、保守性を犠牲にします。 それで何か価値のあるものを買っていることを確認したほうがいいでしょう。

優れたアルゴリズムは、局所的なチューニングにほとんど常に勝るということに注意してください。 正しく、明確で、高速なコードを作成できない理由はありません。 しかし、「高速」に焦点を当てることから始めると、そこに到達するのは不当に幸運なことでしょう。