最適なコード?

数年間、私は1つの非常に興味深いデバイスに取り組んできました。 この間に、40の計算されたインジケーターから、システムは約300に成長し、「正しい」コードに対する私の見解は大きく変わりました。



作業の最初の段階で、インジケーターの計算速度を可能な限り最適化したいという要望がありました。計算されたインジケーターの値をキャッシュするために「トリッキー」アルゴリズムを使用しました。 私は見て、私がどれだけ「クール」だと思って、すべてをやったのか嬉しかった。



しかし、時間の経過とともに、理論は洗練され、指標を計算するための基準、係数、式だけでなく、一般的な値を取得するためのアルゴリズムも変更する必要がありました。 その結果、徐々に速度が計算的に明確なアルゴリズムに交換されました。 入力インジケータの数が30から80に増加し、300に計算されたとき、コードはすでに最適な速度から非常に離れていました。 計算された指標は、他の指標、他の指標は3番目、そしていくつかのレベルのネストを参照し、それぞれ同じ値が繰り返されました。



一方で、それは悪夢です-非常に多くの無駄な計算、最適化のための広大な分野。 しかし、問題をより広く見ると、状況は根本的に変わります。

1.プログラムは、開発者が提供するハードウェアで使用されます

2.同じ金銭的制約の下で、鉄の力は非常に大きくなったため、新しいハードウェアでの最適化されていないアルゴリズムは、古いハードウェアで最適化されたアルゴリズムよりも速く動作します。

3.インジケーターは個別に計算され、計算時のCPU負荷は、合計一定負荷が20-25でピーク負荷が50%の場合、3-4%しか増加しません。

4.定期的に、インジケーター間の関係が変化します。以前に行われたことを理解し、変更や追加を行う必要があります

5.最も価値のあること-インディケーターの計算機能を見るとき、それが何を意味するかは明確です。



結論:コードとアルゴリズムの最適性の基準は特定のタスクごとに異なり、状況に応じて、鉄の最適化から人間の開発者の最適化にますます移行しています。 鉄片は毎日急勾配で涼しくなり、プログラマーは年をとっています:)



All Articles