タグ付けされた質問 「performance」

コードおよびアプリケーション効率の測定または改善に関する質問。

7
C#の並べ替えとOrderByの比較
SortまたはOrderByを使用してリストを並べ替えることができます。どちらが速いですか?両方が同じアルゴリズムで作業していますか? List<Person> persons = new List<Person>(); persons.Add(new Person("P005", "Janson")); persons.Add(new Person("P002", "Aravind")); persons.Add(new Person("P007", "Kazhal")); 1。 persons.Sort((p1,p2)=>string.Compare(p1.Name,p2.Name,true)); 2。 var query = persons.OrderBy(n => n.Name, new NameComparer()); class NameComparer : IComparer<string> { public int Compare(string x,string y) { return string.Compare(x, y, true); } }

4
JavaScriptでのオブジェクト/配列のパフォーマンスはどのくらいですか?(特にGoogle V8の場合)
JavaScriptの配列とオブジェクト(特にGoogle V8)に関連するパフォーマンスは、文書化すると非常に興味深いものになります。このトピックに関する包括的な記事はインターネットのどこにもありません。 一部のオブジェクトは、基礎となるデータ構造としてクラスを使用することを理解しています。プロパティが多数ある場合、ハッシュテーブルとして扱われることがありますか? また、配列がC ++配列のように扱われる場合があることも理解しています(つまり、高速なランダムインデックス付け、削除の遅延、サイズ変更)。また、オブジェクトのように扱われる場合もあります(高速なインデックス作成、高速な挿入/削除、より多くのメモリ)。そして、時々それらはリンクされたリストとして保存されるかもしれません(すなわち、遅いランダムなインデックス付け、最初/最後の速い削除/挿入) JavaScriptでの配列/オブジェクトの取得と操作の正確なパフォーマンスは何ですか?(特にGoogle V8の場合) より具体的には、それがパフォーマンスに与える影響: オブジェクトにプロパティを追加する オブジェクトからプロパティを削除する オブジェクトのプロパティにインデックスを付ける 配列に項目を追加する 配列からアイテムを削除する 配列内のアイテムにインデックスを付ける Array.pop()を呼び出す Array.push()を呼び出す Array.shift()の呼び出し Array.unshift()の呼び出し Array.slice()の呼び出し 詳細についての記事やリンクも同様にいただければ幸いです。:) 編集:私は本当にJavaScriptの配列とオブジェクトが内部でどのように機能するのか疑問に思っています。また、V8エンジンは別のデータ構造に「切り替える」ことをどのような状況で「知っている」のでしょうか。 たとえば、次のような配列を作成するとします... var arr = []; arr[10000000] = 20; arr.push(21); ここで何が起こっているのですか? または...これは... ??? var arr = []; //Add lots of items for(var i = 0; i < 1000000; i++) arr[i] …


2
arrayfunは、MATLABの明示的なループよりも大幅に遅くなる可能性があります。どうして?
の次の簡単な速度テストを考えますarrayfun。 T = 4000; N = 500; x = randn(T, N); Func1 = @(a) (3*a^2 + 2*a - 1); tic Soln1 = ones(T, N); for t = 1:T for n = 1:N Soln1(t, n) = Func1(x(t, n)); end end toc tic Soln2 = arrayfun(Func1, x); toc 私のマシン(Linux Mint 12のMatlab 2011b)では、このテストの出力は次のようになります。 …


8
O(n)より速く配列要素のインデックスを取得
私が巨大な配列とその値を持っていると仮定します。配列の値のインデックスを取得したい。他に方法はありますArray#indexか?問題は、本当に巨大な配列を維持し、Array#index膨大な回数を呼び出す必要性から生じます。 数回試行した結果、値自体ではなくフィールドを持つ構造体を格納することで要素内にインデックスをキャッシュすると(value, index)、パフォーマンスが大幅に向上することがわかりました(20倍の勝率)。 それでも、キャッシュせずにen要素のインデックスを見つけるより便利な方法があるかどうか(または、パフォーマンスを向上させる優れたキャッシュテクニックがあるかどうか)。

3
なぜ私のアプリケーションは、その寿命の24%をnullチェックに費やしているのですか?
パフォーマンスが重要なバイナリ決定ツリーがあり、この質問を1行のコードに集中したいと思います。バイナリツリーイテレータのコードは、それに対してパフォーマンス分析を実行した結果です。 public ScTreeNode GetNodeForState(int rootIndex, float[] inputs) { 0.2% ScTreeNode node = RootNodes[rootIndex].TreeNode; 24.6% while (node.BranchData != null) { 0.2% BranchNodeData b = node.BranchData; 0.5% node = b.Child2; 12.8% if (inputs[b.SplitInputIndex] <= b.SplitValue) 0.8% node = b.Child1; } 0.4% return node; } BranchDataはフィールドであり、プロパティではありません。インライン化されないリスクを防ぐためにこれを行いました。 BranchNodeDataクラスは次のとおりです。 public sealed class BranchNodeData { /// …

11
C#で小さなコードサンプルをベンチマークします。この実装を改善できますか?
私はかなり頻繁にSOを使用して、コードの小さなチャンクをベンチマークして、どの侵入が最も速いかを確認しています。 ベンチマークコードでは、ジッターやガベージコレクターが考慮されていないというコメントをよく目にします。 私はゆっくりと進化してきた次の簡単なベンチマーク機能を持っています: static void Profile(string description, int iterations, Action func) { // warm up func(); // clean up GC.Collect(); var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); } watch.Stop(); Console.Write(description); Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds); } 使用法: Profile("a descriptions", …

4
Haskellプログラムのパフォーマンスを分析するためのツール
Haskellを学ぶためにいくつかのプロジェクトオイラー問題を解決している間に(現在、私は完全に初心者です)、問題12に出会いました。私はこの(素朴な)解決策を書きました: --Get Number of Divisors of n numDivs :: Integer -> Integer numDivs n = toInteger $ length [ x | x<-[2.. ((n `quot` 2)+1)], n `rem` x == 0] + 2 --Generate a List of Triangular Values triaList :: [Integer] triaList = [foldr (+) 0 [1..n] | n <- …

5
HashSet <T>対Dictionary <K、V>で、アイテムが存在するかどうかを検索する時間を検索する
HashSet&lt;T&gt; t = new HashSet&lt;T&gt;(); // add 10 million items Dictionary&lt;K, V&gt; t = new Dictionary&lt;K, V&gt;(); // add 10 million items. どっちの.Contains方が早く戻るの? 明確にするために、私の要件は、データ構造内に存在するかどうかを確認する必要があるオブジェクトが1,000万個(実際には文字列)あることです。私は決して反復しません。

20
GC.Collect()を使用することの何が問題になっていますか?
私はこの機能を使用することの深刻な影響を理解しています(または少なくともそれが私が思うことです)が、なぜそれが、立派なプログラマーがこれまで使用しないこれらの事柄の1つになっているのか、知らない人であっても理解できませんそれが何のためにあるのか。 ユーザーが何をしているかによってメモリ使用量が極端に異なるアプリケーションを開発しているとしましょう。アプリケーションのライフサイクルは、編集とリアルタイム処理の2つの主要な段階に分けることができます。編集の段階で、何十億、または何兆ものオブジェクトが作成されたとします。それらのいくつかは小さく、いくつかはそうでない、いくつかはファイナライザを持っているかもしれないし、いくつかは持っていないかもしれません、そしてそれらの寿命が非常に数ミリ秒から長い時間まで変化すると仮定します。次に、ユーザーはリアルタイムステージに切り替えることを決定します。この時点で、パフォーマンスが基本的な役割を果たしており、プログラムのフローのわずかな変更が壊滅的な結果をもたらす可能性があると想定します。オブジェクトの作成は、オブジェクトプールなどを使用することで可能な限り最小限に抑えられますが、GCは予期せずにチャイムし、すべてを捨てて誰かが死にます。 質問:この場合、第2ステージに入る前にGC.Collect()を呼び出すのは賢明ではないでしょうか。 結局のところ、これら2つの段階は互いに時間的に重複することは決してなく、GCが収集できたすべての最適化と統計はここではほとんど役に立ちません... 注:一部の方が指摘したように、.NETはこのようなアプリケーションに最適なプラットフォームではないかもしれませんが、それはこの質問の範囲を超えています。その目的は、GC.Collect()呼び出しがアプリケーションの全体的な動作/パフォーマンスを改善できるかどうかを明確にすることです。あなたがそのようなことを行う状況は非常にまれであることに私たちは皆同意しますが、GCはほとんどの場合、推測を試み、それを完全にうまく行いますが、それはまだ推測についてです。 ありがとう。


5
Javaキャストではオーバーヘッドが発生しますか?どうして?
あるタイプのオブジェクトを別のタイプにキャストするときにオーバーヘッドはありますか?または、コンパイラはすべてを解決し、実行時にコストはかかりませんか? これは一般的なことですか、それともさまざまなケースがありますか? たとえば、Object []の配列があり、各要素の型が異なる可能性があるとします。ただし、たとえば、要素0はDouble、要素1はStringであることを常に確信しています。(私はこれが間違った設計であることを知っていますが、私がこれをしなければならなかったと仮定しましょう。) Javaの型情報は実行時に保持されますか?または、コンパイル後にすべてが忘れられ、(Double)elements [0]を実行した場合、ポインタをたどり、それらの8バイトをdoubleとして解釈します。 Javaで型がどのように行われるかについては非常に不明確です。本や記事についての推薦があれば、感謝します。

3
タイマータスクまたはハンドラー
10秒ごとになんらかのアクションを実行したいとしますが、必ずしもビューを更新する必要はありません。 問題は、次のようにtimertaskでtimerを使用する方が良い(つまり、より効率的で効果的)かどうかです。 final Handler handler = new Handler(); TimerTask timertask = new TimerTask() { @Override public void run() { handler.post(new Runnable() { public void run() { &lt;some task&gt; } }); } }; timer = new Timer(); timer.schedule(timertask, 0, 15000); } またはpostdelayedのハンドラー final Handler handler = new Handler(); final Runnable r …

14
ASP.NET MVCパフォーマンス
ASP.NET MVCはASP.NET WebFormsよりも30倍高速であるという野生の発言を見つけました。実際のパフォーマンスの違いは何か、これは測定されているか、パフォーマンスの利点は何か。 これは、ASP.NET WebフォームからASP.NET MVCへの移行を検討するのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.