web-dev-qa-db-ja.com

優れたコーディング慣行とパフォーマンスのヒントのワンストップショップ?

これは非常に主観的な質問かもしれませんが、さまざまな言語の優れたコーディングとパフォーマンスのヒント、およびそれらを他の言語と比較する方法について読むことができる場所(または多くの場所)がWeb上にあるかどうか疑問に思いました。

たとえば、AS3では、除算よりも乗算の方が高速ですが、これはJSでも同じですか?コードの実行を大幅に高速化するための他のヒントはありますか?そして、これらのヒントはどこにありますか?

5
Ahmed Nuaman

最初に自問すべき本当の質問は次のとおりです:「私はすでにパフォーマンスについて考えるべきですか?」

通常、パフォーマンスの問題が発生した場合にのみ、パフォーマンスについて心配する必要があります。これが私のお気に入りの引用の1つです:

最適化されたコードを修正するよりも、正しいコードを最適化する方が簡単です。 -- ビルハーラン

非効率的なアルゴリズム(または実際のプロジェクトに関係のない愛好家の議論)によって引き起こされるパフォーマンスの問題については、ここプログラマーが最善です。言語固有のパフォーマンスの問題については、 Stack Overflow の方が適しています。

そして、あなたの実際の質問に答えるために:すべての言語(機能を比較する)のパフォーマンス統計をリストするサイトが存在した場合、それをどのように使用しますか?仮想通話が高速になるため、一方の言語をもう一方の言語よりも選択しますか?

4
Steven Jeuris

このウェブサイト、つまり Programmers.StackExchange は、基本的にこの種の問題と質問のみを対象としていると思います。これは [〜#〜] faq [〜#〜] ページからの抜粋です:-

プログラマー— Stack Exchangeは、ソフトウェア開発に関する概念的な質問について専門家の回答を得ることに関心のあるプロのプログラマー向けのサイトです。ご不明な点がございましたら…

  • アルゴリズムとデータ構造の概念
  • デザインパターン
  • 開発者テスト
  • 開発方法論
  • フリーランスとビジネス上の懸念
  • 品質保証
  • ソフトウェアアーキテクチャ
  • ソフトウェア工学
  • ソフトウェアライセンス
2
Pankaj Upadhyay

実際の回答が不足しているため、探していたサイトを構築することをお勧めします。あなたが説明した簡単なパフォーマンス比較を行い、それらをブログに入れるのはかなり簡単です。他の人が入力できるようにしたい場合は、Stack Exchangeにperformance.StackExchange.comサイトを追加するように勧めるか、同様のサイトを自分で構築することができます。

1
John Fisher

あなたはここで本当に良い答えを得ています。スタック*フォーラムは優れた情報源です。

各言語にはパフォーマンスの秘訣がありますが、優れたパフォーマンスの鍵は設計の単純さです。次に、afterソフトウェアが実行されている(コーディング時ではない)パフォーマンスを処理します。コードを目で見て、場所YでトリックXを使用する必要があるかどうかを推測するのは非生産的です。実際に実行されているプログラムに修正方法を教えてもらいます。 (誰もがそれを知っていますが、彼らはまだready-fire-aimメソッドを使用しています。)あなたが学ぶなら このテクニック パフォーマンスのために診断では、他の多くの人と同じように、それが役立つことがわかります。

基本的に、プログラムをランダムに数回中断し、そのたびにプログラムが何をしているのかを詳細に理解します。スキミングしないでください。それが何をしているのか、そしてその理由を理解してください。

それが2回何かをしているのを見たらそれをどのように説明しても、その活動にはかなりの時間がかかります。あなたがそれを早く見るほど、それはより重要です。

技術的には、あるアクティビティが時間の一部pを消費している場合、2回表示する前に必要なサンプルの平均数は2/p。したがって、pが20%の場合、平均して10サンプルで2回表示されます。 (技術的には、これは負の二項分布に由来します。コインに公平性がある場合p、前に取得するテールの数xヘッドは、平均してx(1-p)/ p)です。

このアプローチのポイントは、さまざまなものを測定して問題のあるコードを絞り込むのではなく、特定のコードにローカライズされていなくても、問題を非常に明確に詳細に表示することです。他の方法では見つけられない問題を見つけることができます。

0
Mike Dunlavey