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

最適化とは、方法または設計を改善することです。プログラミングでは、最適化は通常、アルゴリズムの速度を上げるか、必要なリソースを減らすという形を取ります。最適化のもう1つの意味は、機械学習で使用される数値最適化アルゴリズムです。

10
Vim起動時間のプロファイリング
Vimを使用すると、多くのプラグインが有効になります。長年にわたってプラグインを収集してきました。Vimが起動するまでの時間に少しうんざりしているので、Vimの起動をプロファイルし、自分が担当している多くのプラグインのうちどれを担当しているかを確認したいと思います。 Vimのスタートアップまたはスクリプト実行をプロファイルする方法はありますか?理想的には、ロードするVimスクリプトごとにVimが費やす時間を知りたいです。

5
Pythonで非常に大きな数を処理する
私はPythonでのポーカーハンドの高速評価を検討しています。プロセスをスピードアップする1つの方法は、すべてのカードの面とスートを素数として表し、それらを掛け合わせて手を表すことだと思いました。聖霊降臨祭に: class PokerCard: faces = '23456789TJQKA' suits = 'cdhs' facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61] suitPrimes = [2, 3, 5, 7] そして def HashVal(self): return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit] これは、各手に数値を与え、モジュロを介して、手にある王の数またはハートの数を教えてくれます。たとえば、その中に5つ以上のクラブがあるハンドは、2 ^ 5で均等に分割されます。4人のキングがいるハンドは、59 ^ 4で均等に分割されます。 問題は、AcAdAhAsKdKhKsのような7枚のカードの手持ちのハッシュ値が約62.7兆であり、内部で表現するために32ビットよりもかなり多くかかることです。そのような大きな数値をPythonに保存して、算術演算を実行できるようにする方法はありますか?

11
なぜMagentoはとても遅いのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 Magentoは通常とてもひどく遅いですか? これは私の初めての体験で、管理パネルは単に変更をロードして保存するのに時間がかかります。これは、テストデータを含むデフォルトのインストールです。 それがホストされているサーバーは、他の非Magentoサイトに超高速でサービスを提供します。Magentoが使用するPHPコードの処理速度を遅くする原因は何ですか?それを修正するために何ができますか?

3
SQL Serverインデックス-昇順または降順、どのような違いがありますか?
MS SQL Server(バージョン2005を使用しています)の列または列の数にインデックスを作成する場合、各列のインデックスが昇順または降順のいずれかになるように指定できます。なぜこの選択​​がここにもあるのか理解するのに苦労しています。バイナリソートテクニックを使用すると、ルックアップはどちらの方法でも同じくらい速くありませんか?どの順序を選択すると、どのような違いがありますか?

11
C ++での関数の実行時間の測定
特定の関数がC ++プログラムでLinuxで実行されるのにかかる時間を調べたい。その後、速度比較をしたいと思います。私はいくつかの時間機能を見ましたが、ブーストからこれで終わりました。クロノ: process_user_cpu_clock, captures user-CPU time spent by the current process さて、上記の関数を使用するかどうか明確ではありませんが、CPUがその関数に費やした唯一の時間を取得できますか? 次に、上記の関数を使用した例が見つかりませんでした。上記の機能の使い方を教えてもらえますか? PS:現在、私はstd::chrono::system_clock::now()時間を秒単位で取得するために使用していますが、これは毎回異なるCPU負荷のために異なる結果を与えます。


13
95%の場合の値が0または1の場合の非常に大きな配列でのランダムアクセスの最適化
非常に大きな配列でのランダムアクセスの最適化の可能性はありますuint8_tか? uint8_t MyArray[10000000]; 配列の任意の位置の値が 0または1のための95%の全ての症例の、 2中4%の症例、 他の1%のケースでは3から255の間ですか? それで、uint8_tこれに使用する配列よりも良いものはありますか?配列全体をランダムな順序でループするのは可能な限り迅速である必要があり、これはRAM帯域幅で非常に重いため、複数のスレッドが異なる配列に対して同時にそれを行う場合、現在はRAM帯域幅全体です。すぐに飽和します。 5%を除くほとんどすべての値が0または1であることが実際にわかっている場合、そのような大きな配列(10 MB)を持つことは非常に非効率だと感じているので、質問します。したがって、配列内のすべての値の95%実際には、8ビットではなく1ビットしか必要ありません。これにより、メモリ使用量がほぼ1桁削減されます。これに必要なRAM帯域幅を大幅に削減し、結果としてランダムアクセスの速度を大幅に向上させる、よりメモリ効率の高いソリューションが必要だと感じています。

9
PHPの結合関数?
多くのプログラミング言語には、合体関数があります(最初の非NULL値を返す、例)。PHPは、残念ながら2009年には機能しません。 PHP自体が合体関数を取得するまで、PHPに実装する良い方法は何でしょうか?

2
リリースモードでは、コードの動作は期待どおりではありません
次のコードは、デバッグモードとリリースモード(Visual Studio 2008を使用)で異なる結果を生成します。 int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } printf("i:%2d, result = %3d\n", i, result) ; } return 0; } デバッグモードの出力。これは予想どおりです。 i: 0, …

3
制限が959ではなく960であるときに単純なループが最適化されるのはなぜですか?
次の単純なループについて考えてみます。 float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } gcc 7(スナップショット)またはclang(トランク)でコンパイルすると、-march=core-avx2 -Ofast非常によく似たものになります。 .LCPI0_0: .long 1148190720 # float 960 f: # @f vmovss xmm0, dword ptr [rip + .LCPI0_0] # xmm0 = mem[0],zero,zero,zero ret つまり、ループせずに答えを960に設定するだけです。 ただし、コードを次のように変更した場合: …
131 c  gcc  optimization  clang 

15
仮想関数とパフォーマンス-C ++
私のクラス設計では、抽象クラスと仮想関数を幅広く使用しています。仮想機能がパフォーマンスに影響を与えていると感じました。これは本当ですか?しかし、このパフォーマンスの違いは顕著ではなく、時期尚早の最適化を行っているように見えます。正しい?


15
C配列に値が存在するかどうかをすばやく見つけるには?
サイズが256(できれば1024、ただし256が最小)の配列を反復処理し、値が配列の内容と一致するかどうかを確認する必要のある、タイムクリティカルなISRを備えた組み込みアプリケーションがあります。boolこの場合、A はtrueに設定されます。 マイクロコントローラーはNXP LPC4357、ARM Cortex M4コア、コンパイラーはGCCです。私はすでに最適化レベル2(3は遅い)を組み合わせ、フラッシュではなくRAMに関数を配置しています。また、ポインター演算とforループを使用します。これは、アップではなくダウンカウントを行います(かどうかのチェックi!=0は、かどうかのチェックよりも高速ですi<256)。結局のところ、私は12.5 µsの持続時間で終了していますが、これは実現可能にするために大幅に削減する必要があります。これは私が今使っている(疑似)コードです: uint32_t i; uint32_t *array_ptr = &theArray[0]; uint32_t compareVal = 0x1234ABCD; bool validFlag = false; for (i=256; i!=0; i--) { if (compareVal == *array_ptr++) { validFlag = true; break; } } これを行う最も速い方法は何でしょうか?インラインアセンブリの使用が許可されています。他の「あまりエレガントでない」トリックも許可されています。

3
このポインタを使用すると、ホットループで奇妙な最適化が解除されます
最近、奇妙な最適化解除に遭遇しました(または最適化の機会を逃しました)。 3ビット整数の配列を8ビット整数に効率的にアンパックするには、この関数を検討してください。ループの繰り返しごとに16の整数をアンパックします。 void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] = t & 0x7; target[1] = (t >> 3) & 0x7; target[2] = (t >> 6) & 0x7; target[3] = (t >> 9) & 0x7; target[4] = (t >> 12) & 0x7; …

14
リリース前のAndroidアプリケーションの最適化[終了]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 プログラムの効率性について「特別な」状況にあります。現在、アプリケーションのパフォーマンスを向上させ、バッテリーの消費を削減する必要がある段階にあります。 質問の前に: まず、私のアプリケーションは動作します。正常に実行され、エラーは発生しません。 次に、Android開発者のWebサイトでバッテリー寿命の最適化を読み、彼らが要求した小さなものを最適化しました。まったく問題ありません。 さて、私は他の開発者が独自のアプリケーションを最適化するために使用した特別な修正について知りたいです。ユーザーが認識したり注意を払ったりすることのないもの。ただし、修正により、バッテリーの寿命が延びるか、アプリケーションのメンテナンスが改善されます。 それで、あなたのユニークな最適化トリックは何ですか? 私は本当に知識を探している特定の状況にあります。これは、開発者が経験したすべての状況について開発者の知識を共有する絶好の機会になると思います。 すばらしい開発者が知識を共有するように促すので、すばらしい答えに投票してください。

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