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

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

30
文字列を逆にする最良の方法
私はC#2.0(つまり、LINQは利用できません)で文字列逆関数を作成する必要があり、これを思いつきました: public string Reverse(string text) { char[] cArray = text.ToCharArray(); string reverse = String.Empty; for (int i = cArray.Length - 1; i > -1; i--) { reverse += cArray[i]; } return reverse; } 個人的に私はその機能に夢中ではなく、それを行うためのより良い方法があると確信しています。ある?


5
Javaで(a * b!= 0)が(a!= 0 && b!= 0)より速いのはなぜですか?
私はJavaでいくつかのコードを書いています。ある時点で、プログラムのフローは、2つのint変数「a」と「b」が非ゼロであるかどうかによって決定されます(注:aとbが負になることはありません。整数オーバーフローの範囲内には決してありません)。 私はそれを評価することができます if (a != 0 && b != 0) { /* Some code */ } または代わりに if (a*b != 0) { /* Some code */ } 私はそのコードが実行ごとに数百万回実行されることを期待しているので、どちらがより高速になるのか疑問に思いました。ランダムに生成された巨大な配列でそれらを比較することによって実験を行い、配列のスパース性(データの割合= 0)が結果にどのように影響するかを知りたくもありました。 long time; final int len = 50000000; int arbitrary = 0; int[][] nums = new int[2][len]; for (double fraction = 0 …

23
重い計算のためにFortranはCよりも最適化が簡単ですか?
Fortranは重い計算ではCよりも高速である、または高速になる可能性があることを時々読んだ。それは本当ですか?私はFortranをほとんど知らないことを認めなければなりませんが、これまでに見たFortranコードは、Cにはない機能が言語にあることを示していませんでした。 それが本当なら、その理由を教えてください。数の計算に適した言語やライブラリを教えないでください。それを行うためにアプリやライブラリを作成するつもりはありません。ただ興味があるだけです。
410 c  performance  fortran 

12
HashSetとリストのパフォーマンス
総称HashSet<T>クラスの検索パフォーマンスが総称クラスの検索パフォーマンスよりも高いことは明らかですList<T>。ハッシュベースのキーをList<T>クラスの線形アプローチと比較するだけです。 ただし、ハッシュキーの計算自体にいくつかのCPUサイクルがかかる場合があるため、少量のアイテムの場合、線形検索はの実際の代替となりHashSet<T>ます。 私の質問:損益分岐はどこですか? シナリオを簡略化するために(そして公平を期すために)、List<T>クラスが要素のEquals()メソッドを使用してアイテムを識別すると仮定しましょう。

16
静的リンクと動的リンク
特定の状況で動的リンクよりも静的リンクを選択する、またはその逆を選択する、説得力のあるパフォーマンス上の理由はありますか?私は次のことを聞いたり読んだりしましたが、その真実性を保証する主題については十分に知りません。 1)静的リンクと動的リンクの実行時パフォーマンスの違いは、通常は無視できます。 2)(1)は、プロファイルデータを使用してプログラムのホットパスを最適化するプロファイリングコンパイラーを使用している場合は当てはまりません。静的リンクを使用すると、コンパイラーはコードとライブラリコードの両方を最適化できるためです。動的リンクを使用すると、コードのみを最適化できます。ほとんどの時間がライブラリコードの実行に費やされている場合、これは大きな違いを生む可能性があります。それ以外の場合は、(1)が引き続き適用されます。

5
純粋に関数型プログラミングの効率
命令型ではなく純粋に機能的にプログラミングするときに発生する可能性がある最悪の漸近的なスローダウンが何であるかを誰かが知っていますか(つまり、副作用を許可する)。 itowlsonによるコメントからの明確化:最もよく知られている非破壊アルゴリズムが最もよく知られている破壊アルゴリズムよりも漸近的に悪い問題はありますか?

6
整数が既知の値のセットを持つ2つの整数(両端を含む)の間にあるかどうかを判断する最速の方法
x >= start && x <= endCまたはC ++ よりも整数が2つの整数の間にあるかどうかをテストするより速い方法はありますか? 更新:私の特定のプラットフォームはiOSです。これは、ピクセルを特定の正方形の円に制限するボックスぼかし関数の一部です。 更新:受け入れられた回答を試した後、通常のx >= start && x <= end方法よりも1行のコードで桁違いに高速化しました。 更新:XCodeからのアセンブラーを使用した前後のコードは次のとおりです。 新しい方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

12
簡単なキーの場合にunordered_mapよりもmapを使用する利点はありますか?
unordered_mapC ++での最近の話で、ルックアップの効率性(償却済みのO(1)とO(log n))のため、以前に使用unordered_mapしたほとんどの場合に使用する必要があることに気付きました。ほとんどの場合、マップを使用します。または、キータイプとしてまたはを使用します。したがって、ハッシュ関数の定義に問題はありません。考えれば考えるほど、単純なタイプのキーの場合にオーバーを使用する理由が見つからないことに気付きました。インターフェースを調べたところ、何も見つかりませんでした。私のコードに影響を与える重要な違い。mapintstd::stringstd::mapstd::unordered_map そこで質問:使用する任意の本当の理由があるstd::map以上std::unordered_mapのような単純なタイプの場合intとはstd::string? 私は厳密にプログラミングの観点から質問しています。これは完全に標準とは見なされておらず、移植に問題が発生する可能性があることを知っています。 また、正しい答えの1つは、オーバーヘッドが小さいため、「データセットが小さいほど効率的である」と思われます(それは本当ですか)。したがって、質問の量がキーは自明ではありません(> 1 024)。 編集: ああ、私は明白なことを忘れました(GManに感謝します!)-はい、もちろん地図は注文されています-私はそれを知っており、他の理由を探しています。

22
HTTPとHTTPSのパフォーマンス
httpとhttpsのパフォーマンスに大きな違いはありますか?HTTPSはHTTPの5分の1の速度になる可能性があることを読んだことを思い出すようです。これは、現在の世代のWebサーバー/ブラウザで有効ですか?もしそうなら、それをサポートするホワイトペーパーはありますか?
363 performance  http  https 

7
ループの順序が2D配列を反復するときにパフォーマンスに影響するのはなぜですか?
以下は、iとj変数を入れ替えた以外はほぼ同じ2つのプログラムです。どちらも異なる時間で実行されます。なぜこれが起こるのか誰かが説明できますか? バージョン1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } バージョン2 #include <stdio.h> #include <stdlib.h> main () { int i,j; …

7
IEnumerableの複数の列挙の可能性に関する警告の処理
私のコードでは、IEnumerable<>数回使用する必要があるため、「可能性のある複数の列挙」のResharperエラーが発生しますIEnumerable。 サンプルコード: public List<object> Foo(IEnumerable<object> objects) { if (objects == null || !objects.Any()) throw new ArgumentException(); var firstObject = objects.First(); var list = DoSomeThing(firstObject); var secondList = DoSomeThingElse(objects); list.AddRange(secondList); return list; } objectsパラメータをに変更してList、考えられる複数の列挙を回避できますが、処理できる最高のオブジェクトを取得できません。 私が行うことができますもう一つは、変換することであるIEnumerableにListメソッドの最初に: public List<object> Foo(IEnumerable<object> objects) { var objectList = objects.ToList(); // ... } しかし、これはただ厄介なことです。 このシナリオで何をしますか?

16
ビューは単純なクエリよりも高速ですか?
は select * from myView ビューを作成するためのクエリ自体よりも高速(同じresultSetを持つため): select * from ([query to create same resultSet as myView]) ? ビューが何らかのキャッシュを使用して単純なクエリと比較して高速化されているかどうかは、私には完全にはわかりません。

7
いつ、なぜデータベースの結合は高価なのですか?
私はデータベースの調査を行っており、リレーショナルDBのいくつかの制限を見ています。 大きなテーブルの結合は非常にコストがかかると感じていますが、その理由は完全にはわかりません。結合操作を実行するためにDBMSは何をする必要がありますか?ボトルネックはどこですか? 非正規化はこの費用を克服するのにどのように役立ちますか?他の最適化手法(インデックス作成など)はどのように役立ちますか? 個人的な体験は大歓迎です!リソースへのリンクを投稿する場合は、ウィキペディアを避けてください。すでにどこにあるかは知っています。 これに関連して、BigTableやSimpleDBなどのクラウドサービスデータベースで使用される非正規化アプローチについて疑問に思っています。この質問を参照してください。


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