問題タブ [optimization]

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.

0 投票する
7 に答える
10657 参照

c - GCC が構造体を最適化しないのはなぜですか?

システムでは、特定のプリミティブをメモリ内の特定のポイントに揃えることが要求されます (int から 4 の倍数のバイト、short から 2 の倍数のバイトなど)。もちろん、これらを最適化して、パディングで無駄なスペースを最小限に抑えることができます。

私の質問は、GCC がこれを自動的に行わないのはなぜですか? より明白なヒューリスティック (最大サイズ要件から最小サイズへの順序変数) が何らかの形で欠けていますか? 一部のコードは、その構造体の物理的な順序に依存していますか (それは良い考えですか)?

GCCは多くの点で非常に最適化されていますが、これはそうではありません.

0 投票する
8 に答える
2210 参照

php - PHPでのレイジー関数の定義-それは可能ですか?

JavaScriptでは、レイジー関数定義を使用して、関数の最初の呼び出しでのみコストのかかる1回限りの操作を実行することにより、関数の2番目からN番目の呼び出しを最適化できます。

PHP 5でも同じようなことをしたいのですが、関数の再定義は許可されておらず、関数のオーバーロードも許可されていません。

事実上、私がやりたいのは次のようなものですが、最適化されているだけなので、2番目からN番目の呼び出し(たとえば25-100)は、最初の呼び出しであるかどうかを再確認する必要はありません。

PS外部コードを1回だけ実行する関数の最初の行としてinclude_once()またはrequire_once()を使用することを考えましたが、これらも高価であると聞きました。

何か案は?またはこれに取り組むためのより良い方法はありますか?

0 投票する
3 に答える
12638 参照

optimization - Lucene のインクリメンタル インデックスの後にインデックスを最適化する必要がありますか?

Lucene インデックスとインクリメンタル インデックスに対して、7 日ごとに完全な再インデックスを実行します (つまり、インデックスをゼロから作成します)。私たちのインデックスには約 700,000 のドキュメントがあり、完全なインデックスには約 17 時間かかります (これは問題ではありません)。

インクリメンタル インデックスを作成する場合、過去 2 時間以内に変更されたコンテンツのみをインデックスに登録するため、時間は大幅に短縮され、約 30 分ほどかかります。ただし、この時間の多く (おそらく 10 分) が IndexWriter.optimize() メソッドの実行に費やされていることに気付きました。

LuceneFAQは次のように述べています。

IndexWriter クラスは、インデックス データベースを圧縮してクエリを高速化する optimize() メソッドをサポートしています。ドキュメント セットの完全なインデックス作成を実行した後、またはインデックスの増分更新後に、このメソッドを使用することができます。増分更新によってドキュメントが頻繁に追加される場合は、最適化の余分なオーバーヘッドを回避するために、最適化を時々実行する必要があります。

...しかし、これは「頻繁に」が何を意味するのかを定義していないようです。最適化は CPU を集中的に使用し、非常に IO を集中的に使用します。最適化されていないインデックスでクエリを実行した場合のヒットはどのくらいですか (たとえば、50,000 のドキュメントが変更された 20 のインクリメンタル インデックスの後と比較して、完全な再インデックス後のクエリ パフォーマンスに関して特に考えています)。すべてのインクリメンタル インデックスの後に最適化する必要がありますか、それともパフォーマンス ヒットは価値がないのでしょうか?

0 投票する
18 に答える
76350 参照

sql - Oracle では低速で実行され、SQL Server では高速に実行される SELECT クエリの最適化

Oracle で次の SQL ステートメントを実行しようとしていますが、実行に時間がかかります。

IN 句にあるサブパートのみを実行すると、Oracle で非常に高速に実行されます。つまり、

Oracle でステートメント全体が非常に長くかかるのはなぜですか? SQL Server では、ステートメント全体がすばやく実行されます。

または、使用する必要がある、より単純な/異なる/より優れたSQLステートメントはありますか?

問題に関する詳細:

  • 各注文は多くのタスクで構成されています
  • 各オーダーは割り当てられます (1 つまたは複数のタスクに Engineer1 と Engineer2 が設定されます)、またはオーダーは割り当て解除されます (すべてのタスクのエンジニア フィールドに null 値が設定されます)。
  • 割り当てられていないすべての orderID を見つけようとしています。

違いが生じる場合に備えて、テーブルには最大 120,000 行あり、注文ごとに 3 つのタスクがあるため、最大 40,000 の異なる注文になります。

回答に対する回答:

  • SQL Server と Oracle の両方で機能する SQL ステートメントを希望します。
  • タスクには、orderID と taskID のインデックスしかありません。
  • ステートメントの NOT EXISTS バージョンを試しましたが、キャンセルするまでに 3 分以上実行されました。おそらくステートメントの JOIN バージョンが必要ですか?
  • orderID 列を持つ「orders」テーブルもあります。しかし、元の SQL ステートメントに含めないことで、質問を単純化しようとしていました。

元の SQL ステートメントでは、SQL ステートメントの最初の部分の各行に対して毎回サブクエリが実行されると思いますが、それは静的であり、一度だけ実行する必要がありますか?

実行中

元の SQL ステートメントの実行速度が大幅に向上しました。

なぜ私はこれをしなければならないのか、またいつ/いつそれを実行する必要があるのか​​ 、私はまだ興味がありますか?

統計は、さまざまな実行計画の効率を判断するために必要な Oracle のコストベースのオプティマイザ情報を提供します。たとえば、テーブル内の行数、行の平均幅、列ごとの最大値と最小値、列ごとの個別値の数、インデックスのクラスタリング係数など

小規模なデータベースでは、ジョブをセットアップして毎晩統計を収集し、そのままにしておくことができます。実際、これは 10g 未満のデフォルトです。大規模な実装では、通常、実行計画の安定性とデータの変更方法を比較検討する必要がありますが、これは難しいバランスです。

Oracle には、「動的サンプリング」と呼ばれる機能もあり、実行時にテーブルをサンプリングして関連する統計を決定するために使用されます。長時間実行されるクエリの潜在的なパフォーマンスの向上が、サンプリングのオーバーヘッドを上回るデータ ウェアハウスで使用されることがはるかに多くなります。

0 投票する
7 に答える
22214 参照

c# - C# の遅いツリービュー

C# で記述されたレガシー アプリケーションがあり、1 万から 2 万の要素を持つ非常に複雑なツリービューが表示されます。

過去に、Win32 API が提供する OWNERDATA 機能で解決した同様の問題 (ただし C++ で) に遭遇しました。

C#にも同様のメカニズムはありますか?

編集: 計画は、作成時間と閲覧時間を最適化することです。Win32 API を介して利用できる方法は、初期化時間をゼロに短縮し、要素に対する要求の数が一度に表示されるものだけに制限されるため、これらの両方の場合に優れています。Joshl: 私たちは実際にあなたが提案したことをすでに実行していますが、さらに効率化する必要があります。

0 投票する
3 に答える
20300 参照

java - JSFでjavax.faces.ViewStateを減らす方法

JSFのビューステート隠しフィールドのサイズを減らすための最良の方法は何ですか?私のビューステートは約40kであることに気づきました。これは、サーバーに到達するすべての要求と応答でクライアントに戻り、サーバーに戻ります。これは、ユーザーにとって大幅な速度低下です。

My Environment JSF 1.2、MyFaces、Tomcat、Tomahawk、RichFaces

0 投票する
7 に答える
2452 参照

c++ - メモリフットプリントが最小の STL 実装は何ですか?

私は、STL を多用する非常に大規模なコンピューティング ライブラリに取り組んでいます。ライブラリは MSVC2003 を使用して構築されており、その STL 実装を使用しています。ライブラリのメモリ要件を下げ、パフォーマンスを向上させる代替の STL 実装を探しています。

現時点では、MSVC の新しいバージョンに切り替えることはできません。

可能であれば、ベンチマークに基づいていない実際の使用状況に関するフィードバックをお願いします。

EDIT:少し明確にするために、たとえば、一部のSTL実装(STLSoftなど)は、文字列連結の特定の最適化を提案しています。これらの影響は小さく聞こえるかもしれませんが、大きな改善につながる可能性があります。STLPort は、彼らが目標を明確に述べているもう 1 つの良い例です。最速の STL 実装がある、stdlib++ があるなど...これらはすべて良い候補になる可能性がありますが、すべてをテストする時間がありません。コミュニティの助けが必要です。その上で。

0 投票する
7 に答える
1388 参照

c++ - なじみのない大規模なコードベースのメモリ フットプリントを削減する

かなり大規模 (~2.2 MLOC) で、かなり古い (10 年以上前に開始された) C/C++ の Windows デスクトップ アプリケーションがあるとします。モジュールの約 10% は外部にあり、ソースはなく、デバッグ シンボルのみです。

アプリケーションのメモリ使用量を半分に減らすにはどうすればよいでしょうか? 少なくとも、メモリが消費されている場所を見つけるにはどうしますか?

0 投票する
6 に答える
1314 参照

c# - C# コンパイラがコードを誤って最適化する

リモート Web サーバーで ASP.NET アプリケーションを実行していますが、次のエラーが発生し始めました。

DLL 内のコードを逆アセンブルしましたが、コンパイラがコードを正しく最適化していないようです。( Set は一連の一意のオブジェクトを実装するクラスであることに注意してください。これは IEnumerable から継承されます。) この行:

次の行にコンパイルされます。

CalendarModule クラスはまったく関係のないクラスです!! .NET がこのようなコードを間違ってコンパイルしていることに気付いた人はいますか?

更新 #1:この問題は、Microsoft のILMergeツールによって導入されたようです。現在、それを克服する方法を調査中です。

更新 #2:これまでに、この問題を解決する方法が 2 つあります。根本的な問題が何であるかはよくわかりませんが、これらの両方で修正されます。

  1. 最適化をオフにします。

  2. 別のマシンで ILMerge を使用してアセンブリをマージします。

そのため、ビルド マシンの構成が何らかの形で間違っているのか (1 年以上マシンを使用してリリースをビルドしていることを考えると奇妙です)、それとも他の問題なのか疑問に思っています。

0 投票する
4 に答える
11817 参照

performance - GPGPU(汎用GPU)開発のメリット・デメリットとは?

GPGPU の開発に役立つ重要な要素は何なのか、そしてもちろん、受け入れられない制約は何なのか、疑問に思っています。

私の頭に浮かぶのは:

  • 主な利点:これらのものの生の力
  • 主な制約: メモリ モデル

あなたの見解は?