問題タブ [processing-efficiency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem のリンク属性全体の反復処理が遅い
私の目的は、WorkItems の親子リンクタイプのリンク関係を取得することです。
165 秒を処理するのに90WorkItem
秒かかり、Microsoft のチーム エクスプローラーは3 秒だけを使用して同じ結果を表示します。
java - スピードのためのプライムテスター
素数などを見つけるクラスを作成するために、Javaで宿題を与えられました(コードでよくわかります)。
私のコード:
私のコードの目標は、より速く(そして正しく)することです。私はこれを達成するのに苦労しています。提案?
**新しいコード:
私はそれを少し良くしようとしました。あなたはどう思いますか、それはもっと改善することができますか?(速度テストはまだ高いです...)
performance - より高速なマシンで最大のケースを計算するにはどうすればよいですか?
質問は :
サイズ n の入力ケースを処理するために正確に n^2 の「命令」を必要とするプログラムと、1 時間の計算時間で処理できる最大の入力ケースが 100 であるマシンの場合、最大のケースの大きさはどれくらいですか? 4倍速の機械に取り替えれば1時間で処理?
どうすればこれを行うことができますか?
string - すべてのクエリ単語を持つ最小の部分文字列を見つけるための効率的なデータ構造
私の友人はインタビューでこの問題に出くわしました。いくつかの文を含むファイルが与えられます。文には 0-9、az、AZ、ピリオド (.) しかありません。ファイルを読み取って、クエリが高速になるように保存する必要があります。このフェーズにかかる時間は問題ではありません。ここで、クエリはいくつかの単語で構成され、これらすべての単語を含む最小の部分文字列を返す必要があります。順序は重要ではありません。(注:ファイル全体がメインメモリに収まると仮定)
たとえば、ファイルが「Ram はコンピュータ サイエンスの学位を取得していました。Ram は自宅にコンピュータを持っています。Ram は現在自宅にいます。」
クエリ 1 :"Ram computer a" 出力: "Ram has a computer" クエリ 2: "Ram home" 応答: "home.Ram"
各ノードが単語で構成されるリンクリストとしてファイルを保存することを考えました。が最後の単語の場合、単語 + フルストップがノードに格納されます。クエリ時に、LL をトラバースして、すべての単語を含む最小の文字列を見つける必要があります。
どうすればさらに最適化できますか? より良い方法でファイルを保存できますか?
javascript - 配列内のオブジェクトを検索するのに最適なアプローチはどれですか?
配列内のオブジェクトを検索する次の方法を並べ替えました。この質問は数え切れないほど聞かれていますが、次の方法からどれが最善かを知りたいです。他にあるならそれも知りたいです。
使用する$.grep()
上記の関数は配列の長さを返します。
- 要素が存在しない場合は 0
- 要素が存在する場合は 1
- 同じ値を持つ複数の要素が存在する場合、長さ > 1
ルックアップ オブジェクトの使用
このようにして、毎回配列全体をトラバースする必要はありません。lookup[id]
代わりにチェックするだけです。
従来の方法で for ループ
要素が存在するかどうかを確認するには、in_array(arr,element)
.
どのアプローチが最適ですか? 質問は真剣に重複しているように聞こえますが、これら3つだけからどれが最適かを確認したいだけです.
アップデート
配列には次のようなオブジェクトが含まれます-
parallel-processing - ネストされたループでの std::max の呼び出し数を最小限に抑える
内部ループで std::max の呼び出し回数を減らそうとしています。これは、何百万回も呼び出しているため (誇張ではありません!)、並列コードの実行速度が順次コードよりも遅くなっているためです。基本的な考え方 (はい、これは割り当てのためのものです) は、最大変化が特定の非常に小さな数値 (0.01 など) を超えないようになるまで、コードが特定のグリッドポイントでの温度を反復ごとに計算することです。新しい温度は、そのすぐ上、下、および横のセルの温度の平均です。結果として、各セルには異なる値があり、グリッドの特定のチャンクの任意のセルで最大の変化を返したいと考えています。
コードは動作していますが、内側のループで std::max を大量に (過度に) 呼び出しており、O(n*n) であるため、処理が遅くなります。1D ドメイン分割を使用しました
注: tdiff は、マトリックスの内容以外には依存しません。
リダクション関数の入力はラムダ関数の結果です
diff は、1 回の反復におけるグリッドのそのチャンク内の単一セルの最大の変化です
ブロックされた範囲は、コードの前半で定義されています
t_new はそのグリッド ポイントの新しい温度、t_old は古い温度です。
コードをより効率的にするにはどうすればよいですか? std::max の呼び出しを減らしたいのですが、正しい値を維持する必要があります。gprof を使用すると、次のようになります。
ETA: コードの実行に費やされた時間の 61.66% が std::max 呼び出しに費やされ、300 万回以上呼び出されます。reduce 関数はラムダ関数の出力ごとに呼び出されるため、ラムダ関数で std::max の呼び出し回数を減らすと、reduce 関数の呼び出し回数も減ります
language-agnostic - 効率的なランダム アクセス累積合計のアルゴリズムまたは設計パターン
私は地理空間データ、特にトラック (緯度と経度によって定義された地理的位置の順序付けられたシーケンス) をいじっています。
ほとんどのアプリケーションでは、開始点から特定の点までの累積距離を計算する必要があります。したがって、track.totalDistance[20]
たとえば を呼び出すと、開始点から点までの距離がインデックス 20 で取得されます。
現在、連続するすべての距離を事前に計算し、変数を増やし、各ポイントに値を割り当てることでこれを解決していますが、これは、トラックを編集 (ポイントの追加、削除、更新) し、「合計distance」は、実際にはトラックポイントの固有のプロパティではなく、トラックを含むトラックのコンテキストにおけるトラックポイントの固有のプロパティです。
一方、ゲッター関数の評価を先延ばしすると、たとえば 、getTotalDistance(track, 20)
多くの反復的で実際には不要な計算が発生します。
問題は、不必要な計算 (完全な初期化または反復) を回避しながら、いつでも任意のインデックスの累積合計をより効率的に取得できる方法でクラスを実装するにはどうすればよいかということです。
私が使用する言語は主に Python、Javascript、および C# ですが、答えはどの言語でも実装できる一般的な構造であると思います。