0

私は現在低レベルの C クラスにいますが、仕事として Javascript をプログラミングしています。

ここに、私の本がこれまでに調べた C の最適化/問題領域をいくつか示します (まだ始めたばかりなので、あまり詳しくありません)。

  • プロシージャのオーバーヘッド (レジスタの復元、スタックの作成など)
  • ループ内でメモリを読み書きする代わりに、一時変数を作成することがあります。

さらに、Javascript の「最適化」にどれくらいの時間を費やすことができますか? C はマシン コードにコンパイルされるため、実行可能ファイルのコンパイルにより多くの時間を費やすことができます。典型的な JS コンパイラの最適化にどれくらいの時間が費やされますか?

Javascript は C よりも高水準の言語であり、そのため、その下で何が行われているかを実際に「知っている」わけではありません。どのような最適化について心配する必要がありますか? 私が今 C で学んでいることは、Javascript でも適用できますか?

4

1 に答える 1

4

JavascriptとCは、物事を表現する方法が根本的に異なるため、最適化手法を比較することすらできないと思います。

この投稿では、プログラマーが実行できる最適化について説明します。

C:

  • 最も適切なデータ型を選択します。(int / long / float / double)
  • ビットフィールドと単語境界での整列。
  • mallocメモリを解放するタイミングと再利用するタイミングの使用と選択。
  • 中間計算

Javascript:

  • 必要に応じて無意味なオブジェクトを作成しないでください。オブジェクトの再利用
  • 中間計算
  • DOMを頻繁に更新しないようにする
  • 大きな未使用の参照をに設定しますnull

簡単な例として。この2つは実際には別世界なので、最適化手法を次のように単純化する必要があります。

  • できることを再利用する
  • 必要のないものを作らないでください。
  • 計算コストの高いことをして、もう一度必要になった場合は、保存してください。
  • 適切なアルゴリズムを選択してください。

リストの最後の項目は、私に関する限り、どのコーダーもその方法を学ぶことができる最も重要な最適化のビットです。

  • より適切なソートを使用する場合は、 BogoSortを使用しないでください。(ヒント、あなたはそうします。)
  • あなたの標準ライブラリがあなたがやりたいことをするための速い方法を持っているかどうか見てください。古いホイールが機能しないことが証明されるまで、ホイールを再発明しないでください。
  • プロファイリングで努力する価値があることが示されるまで、マイクロ最適化を行うことについてあまり心配しないでください。

免責事項:はい、私は「時期尚早の最適化はすべての悪の根源である」という古い格言を知っています。問題を解決するための賢い、または少なくとも、ひどく馬鹿げていない方法を選択することは時期尚早ではありません。

于 2012-09-27T01:12:07.403 に答える