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

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

27
.NETでの2つのバイト配列の比較
どうすればこれを速くできますか? 確かに私はこれを行うことができます: static bool ByteArrayCompare(byte[] a1, byte[] a2) { if (a1.Length != a2.Length) return false; for (int i=0; i<a1.Length; i++) if (a1[i]!=a2[i]) return false; return true; } しかし、私はBCL関数、またはこれを行うための高度に最適化された実証済みの方法を探しています。 java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2); うまく動作しますが、x64で動作するようには見えません。 ここで私の超高速の答えに注意してください。
541 c#  .net  arrays  performance  j# 

13
なぜC ++コンパイルはそんなに時間がかかるのですか?
C ++およびJavaと比較すると、C ++ファイルのコンパイルには非常に長い時間がかかります。C ++ファイルのコンパイルには、通常サイズのPythonスクリプトを実行するよりも大幅に時間がかかります。現在VC ++を使用していますが、どのコンパイラでも同じです。どうしてこれなの? ヘッダーファイルを読み込んでプリプロセッサを実行することが2つの理由として考えられますが、それがなぜそれほど時間がかかるのかを説明できるとは思えません。

16
LINQクエリでToList()またはToArray()を呼び出す方が良いですか?
宣言した場所でクエリを正しく評価したい場合がよくあります。私はその上に複数回反復する必要があるので、これは通常と、計算が高価です。例えば: string raw = "..."; var lines = (from l in raw.Split('\n') let ll = l.Trim() where !string.IsNullOrEmpty(ll) select ll).ToList(); これは正常に動作します。しかし、結果を変更しない場合は、ToArray()ではなくをこともできToList()ます。 ただし、はToArray()最初の呼び出しによって実装されるToList()ので、単にを呼び出すよりもメモリ効率が悪いのではないかと思いToList()ます。 私は狂っていますか?私はちょうど呼び出す必要がありToArray()、安全でメモリが二回割り当てられないだろうという知識で安全な- ?
519 .net  linq  performance 


3
Dockerコンテナの実行時パフォーマンスコストはどれくらいですか?
Dockerコンテナーの実行時パフォーマンスコストを包括的に理解したいと思います。ネットワーキングへの言及が偶発的に〜100µs遅くなることがわかりました。 また、実行時コストが「無視できる」「ゼロに近い」との言及もありましたが、これらのコストがどの程度かをもっと正確に知りたいのです。理想的には、Dockerがパフォーマンスコストで抽象化しているものと、パフォーマンスコストなしで抽象化されているものを知りたいです。ネットワーク、CPU、メモリなど さらに、抽象化コストがある場合、抽象化コストを回避する方法はありますか。たとえば、ディスクを直接マウントすることも、Dockerで仮想的にマウントすることもできます。

23
どちらが速いか:スタック割り当てまたはヒープ割り当て
この質問はかなり初歩的に聞こえるかもしれませんが、これは私が一緒に働く別の開発者との議論でした。 ヒープに割り当てるのではなく、スタック割り当てに可能な限り注意を払いました。彼は私に話し、私の肩越しに見守っていて、彼らは同じパフォーマンスであるので、それは必要ではないとコメントしました。 スタックの増加は一定の時間であり、ヒープ割り当てのパフォーマンスは現在のヒープの複雑さ(適切なサイズのホールを見つける)と割り当て解除(ホールを縮小して断片化を減らす)の両方に依存するという印象を受けました。多くの標準ライブラリの実装では、私が間違っていない限り、削除中にこれを行うのに時間がかかります)。 これは、おそらくコンパイラに大きく依存するものとして私を襲います。特にこのプロジェクトでは、PPCアーキテクチャにMetrowerksコンパイラを使用しています。この組み合わせに関する洞察が最も役立ちますが、一般的に、GCCとMSVC ++の場合はどうなりますか?ヒープ割り当てはスタック割り当てよりもパフォーマンスが高くありませんか?違いはありませんか?または、違いが非常に小さいので、無意味なマイクロ最適化になります。
503 c++  performance  memory  stack  heap 

14
新しいリストを作成せずにセットをリストに変換
私はこのコードを使用してa Setをa に変換していListます: Map<String, List<String>> mainMap = new HashMap<>(); for (int i=0; i < something.size(); i++) { Set<String> set = getSet(...); //returns different result each time List<String> listOfNames = new ArrayList<>(set); mainMap.put(differentKeyName, listOfNames); } ループの繰り返しごとに新しいリストを作成することは避けたいです。それは可能ですか?
503 java  performance  list  set 


18
Javaのパフォーマンスに対する例外の影響は何ですか?
質問:Javaでの例外処理は実際には遅いですか? 従来の知識と多くのGoogleの結果は、Javaの通常のプログラムフローに例外的なロジックを使用するべきではないと述べています。通常、2つの理由が挙げられます。 それは本当に遅いです-通常のコードよりも桁違いに遅いです(与えられた理由は異なります)、 そして 例外的なコードで処理されるのはエラーのみであることを人々が期待するので、それは厄介です。 この質問は#1についてです。 例として、このページではJava例外処理を「非常に遅い」と説明し、スローを例外メッセージ文字列の作成に関連付けます-「この文字列は、スローされる例外オブジェクトの作成に使用されます。これは高速ではありません。」記事Javaでの効果的な例外処理は、「これの理由は、例外処理のオブジェクト作成の側面が原因であり、それによって例外のスローが本質的に遅くなります」と述べています。もう1つの理由は、スタックトレースの生成が遅くなることです。 私のテスト(32ビットLinuxでJava 1.6.0_07、Java HotSpot 10.0を使用)は、例外処理が通常のコードより遅くないことを示しています。コードを実行するループでメソッドを実行してみました。メソッドの最後で、ブール値を使用してreturnまたはthrowのどちらを示すかを示します。このように、実際の処理は同じです。メソッドをさまざまな順序で実行し、テスト時間を平均化してみました。JVMがウォームアップしているのではないかと思いました。私のすべてのテストで、スローは少なくともリターンと同じくらい高速でしたが、高速ではなかった(最大3.1%高速でした)。私のテストが間違っている可能性は完全に受け入れられていますが、コードのサンプル、テストの比較、またはJavaでの例外処理が実際にあることを示す過去1〜2年の結果には、何も見たことがありません。スロー。 この道をたどるのは、通常の制御ロジックの一部として例外をスローするために使用する必要があるAPIでした。使い方を修正したかったのですが、今はできないかもしれません。代わりに私は彼らの前向きな考え方で彼らを賞賛しなければなりませんか? 論文「ジャストインタイムコンパイルでの効率的なJava例外処理」では、例外ハンドラーが存在するだけで、例外がスローされない場合でも、JITコンパイラーがコードを適切に最適化して速度を低下させるのを防ぐのに十分であると著者らは述べています。 。この理論はまだテストしていません。

30
アセンブリはCより速いですか?
アセンブラーを知っている理由の1つは、場合によっては、高水準言語(特にC)でコードを記述するよりもパフォーマンスの高いコードを記述するために使用できることです。ただし、これは完全に誤りではありませんが、実際にアセンブラを使用してよりパフォーマンスの高いコードを生成できるケースは非常にまれであり、アセンブリに関する専門知識と経験が必要であると何度も述べたと聞いています。 この質問は、アセンブラー命令がマシン固有で移植不可能であるという事実、またはアセンブラーの他の側面のいずれにも当てはまりません。もちろん、これ以外にもアセンブリを理解することには十分な理由がありますが、これは例やデータを求める特定の質問であり、アセンブラと高水準言語についての幅広い談話ではありません。 最新のコンパイラを使用して適切に記述されたCコードよりもアセンブリが高速になる場合の具体的な例を誰かが提供できますか?プロファイリングの証拠でその主張をサポートできますか?私はこれらのケースが存在することを確信していますが、いくつかの論争のポイントであると思われるので、これらのケースがどれほど難解であるかを正確に知りたいです。
475 c  performance  assembly 

15
DateTime.Nowは関数のパフォーマンスを測定する最良の方法ですか?
ボトルネックを見つけ、時間をできるだけ正確に測定する必要があります。 次のコードスニペットは、パフォーマンスを測定するための最良の方法ですか? DateTime startTime = DateTime.Now; // Some execution process DateTime endTime = DateTime.Now; TimeSpan totalTimeTaken = endTime.Subtract(startTime);
474 c#  .net  performance  datetime  timer 



30
文字列の最初の文字を大文字にする(最大のパフォーマンスで)
私にはa DetailsViewがありTextBox 、入力データは常に FIRST LETTER IN CAPITAL で保存する必要があります。 例: "red" --> "Red" "red house" --> " Red house" この最大のパフォーマンスを実現するにはどうすればよいですか? 注: 回答と回答の下のコメントに基づいて、多くの人は、これは文字列内のすべての単語を大文字にすることについて尋ねていると考えています。たとえば、そう=> Red House ではありませんが、それがあなたの求めるものである場合は、TextInfoのToTitleCase方法を使用する答えの1つを探してください。(注:これらの回答は、実際に尋ねられた質問に対しては正しくありません。)警告 については、TextInfo.ToTitleCaseのドキュメントを参照してください(すべて大文字の単語には触れない-頭字語と見なされます。 「McDonald」=>「Mcdonald」などのように下げられます。カルチャ固有の微妙な再大文字化ルールをすべて処理することは保証されていません。 注: 質問はあいまいな最初の後の文字がする必要があるかどうかの強制する場合を下げます。受け入れられた回答では、最初の文字のみを変更する必要があると想定しています。文字列内の最初の文字を除くすべての文字を小文字にしたい場合は、を含みToLower、ToTitleCaseを含まない回答を探します。
447 c#  performance 

6
速度ではなくサイズを最適化すると、GCCが15-20%速いコードを生成するのはなぜですか?
私が2009年に最初に気付いたのは、GCC(少なくとも私のプロジェクトと私のマシン上で)が、 -Os速度(-O2または-O3)ではなくサイズ()です。 私はなんとかこの驚くべき動作を示し、ここに投稿するのに十分なほど小さいコードを作成することに成功しました。 const int LOOP_BOUND = 200000000; __attribute__((noinline)) static int add(const int& x, const int& y) { return x + y; } __attribute__((noinline)) static int work(int xval, int yval) { int sum(0); for (int i=0; i<LOOP_BOUND; ++i) { int x(xval+sum); int y(yval+sum); int z = add(x, y); sum += …

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