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

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

5
ListViewへのアイテムの追加を高速化するにはどうすればよいですか?
WinForms ListViewに数千(例:53,709)のアイテムを追加しています。 試行1:13,870 ms foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } これは非常にうまくいきません。明らかな最初の修正は、を呼び出すことBeginUpdate/EndUpdateです。 試行2:3,106 ms listView.BeginUpdate(); foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } listView.EndUpdate(); これは優れていますが、それでも桁違いに遅すぎます。ListViewItemsの作成とListViewItemsの追加を分けて、実際の原因を見つけましょう。 試行3:2,631 ms var items = new List<ListViewItem>(); foreach (Object o …

6
ifステートメントとif-elseステートメントのどちらが速いですか?[閉まっている]
クローズ。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てるようにします。 3年前に閉鎖されました。 この質問を改善する 先日、この2つのスニペットについて友人と議論しました。どちらが速いのか、そしてその理由は? value = 5; if (condition) { value = 6; } そして: if (condition) { value = 6; } else { value = 5; } value行列の場合はどうなりますか? 注:私はそれvalue = condition ? 6 : 5;が存在することを知っており、より高速になることを期待していますが、それはオプションではありませんでした。 編集(質問は現在保留中のため、スタッフから要求されました): 最適化されたバージョンと最適化されていないバージョンの両方でメインストリームコンパイラ(g ++、clang ++、vc、mingwなど)によって生成されたx86アセンブリまたはMIPSアセンブリのいずれかを検討して回答してください。 アセンブリが異なる場合は、バージョンが高速である理由と時期を説明してください(たとえば、「分岐がないため、分岐に次の問題が発生するため、より良い」)

16
Google Analyticsにはパフォーマンスのオーバーヘッドがありますか?
Google Analyticsはパフォーマンスにどの程度影響しますか? 私は以下を探しています: ベンチマーク(応答時間/ページロード時間などを含む) 同様のベンチマークへのリンクまたは結果 サイトでGoogleAnalytics(GA)をテストする1つの(可能な)方法: 独自のサーバーからga.js(Google Analytics JavaScriptファイル)を提供します。 Google Daily(テスト1)およびWeekly(テスト2)から更新します。 これにより、クライアントWebサーバーとGAサーバー間の通信がどのように減少するかを知りたいと思います。 誰かがこれらのテストのいずれかを実施しましたか?もしそうなら、あなたはあなたの結果を提供できますか?そうでない場合、GAを使用するためのパフォーマンスヒット(またはその欠如)をテストするためのより良い方法はありますか?

4
bcp / BULKINSERTとテーブル値パラメーターのパフォーマンス
BULK INSERTスキーマが変更されたため、SQL Serverのコマンドを使用してかなり古いコードを書き直さなければならないところです。代わりに、TVPを使用してストアドプロシージャに切り替えることを検討する必要があると思いましたが、どのような影響があるのでしょうか。パフォーマンスに影響する可能性があります。 私がこの質問をしている理由を説明するのに役立つかもしれないいくつかの背景情報: データは実際にはWebサービスを介して受信されます。Webサービスは、データベースサーバー上の共有フォルダーにテキストファイルを書き込みます。共有フォルダーは、を実行しますBULK INSERT。このプロセスは元々SQLServer 2000に実装されていましたが、当時INSERTはサーバーで数百のステートメントをチャックする以外に方法はありませんでした。これは実際には元のプロセスであり、パフォーマンスの低下でした。 データは永続的なステージングテーブルに一括挿入されてから、はるかに大きなテーブルにマージされます(その後、ステージングテーブルから削除されます)。 挿入するデータの量は「大規模」ですが、「巨大」ではありません。通常は数百行、まれに5〜1万行がトップになります。したがって、BULK INSERTログに記録されていない操作であってもそれほど大きな違いはないというのが私の直感です(もちろん、私にはわかりません。したがって、質問です)。 挿入は実際にははるかに大きなパイプラインバッチプロセスの一部であり、連続して何度も実行する必要があります。したがって、パフォーマンスは重要です。 をBULK INSERTTVPに置き換えたい理由は次のとおりです。 NetBIOSを介してテキストファイルを書き込むことは、おそらくすでにある程度のコストがかかり、アーキテクチャの観点からはかなり厄介です。 ステージングテーブルは削除できる(そして削除すべきである)と私は信じています。その主な理由は、挿入されたデータを挿入と同時に他のいくつかの更新に使用する必要があり、ほとんど空のステージングを使用するよりも、大規模な本番テーブルから更新を試みる方がはるかにコストがかかるためです。テーブル。TVPでは、パラメータは基本的にあるステージング表、私はメインの挿入後/前に私が欲しいものを行うことができます。 重複チェック、クリーンアップコード、および一括挿入に関連するすべてのオーバーヘッドをほぼなくすことができました。 サーバーがこれらのトランザクションのいくつかを一度に取得する場合、ステージングテーブルまたはtempdbでのロックの競合について心配する必要はありません(回避しようとしますが、発生します)。 明らかに、本番環境に移行する前にこれをプロファイリングするつもりですが、この目的でTVPを使用することについて、誰かが厳しい警告を発するかどうかを確認するために、時間を費やす前にまず周りに尋ねるのは良い考えかもしれません。 つまり、SQL Server 2008に慣れていて、これを試したり、少なくとも調査したりした人にとって、評決は何でしょうか。たとえば、かなり頻繁に発生する数百から数千行の挿入の場合、TVPはマスタードをカットしますか?バルクインサートと比較してパフォーマンスに大きな違いはありますか? 更新:疑問符が92%少なくなりました! (別名:テスト結果) 最終結果は、36段階の展開プロセスのように感じられた後、現在本番環境にあります。両方のソリューションが広範囲にテストされました。 共有フォルダーコードをリッピングし、SqlBulkCopyクラスを直接使用します。 TVPを使用したスト​​アドプロシージャへの切り替え。 読者が正確に何がテストされたかを知ることができるように、このデータの信頼性に関する疑問を和らげるために、このインポートプロセスが実際に行うことのより詳細な説明を以下に示します。 通常は約20〜50データポイントの時間データシーケンスから始めます(ただし、数百になることもあります)。 データベースからほとんど独立している、クレイジーな処理をたくさん実行します。このプロセスは並列化されているため、(1)のシーケンスの約8〜10が同時に処理されています。各並列プロセスは、3つの追加シーケンスを生成します。 3つのシーケンスすべてと元のシーケンスを取得し、それらを1つのバッチに結合します。 現在完了している8〜10個の処理タスクすべてのバッチを1つの大きなスーパーバッチに結合します。 BULK INSERTストラテジー(次のステップを参照)またはTVPストラテジー(ステップ8にスキップ)のいずれかを使用してインポートします。 SqlBulkCopyクラスを使用して、スーパーバッチ全体を4つの永続的なステージングテーブルにダンプします。 JOIN(a)いくつかの条件を含む2つのテーブルで一連の集計ステップを実行し、(b)MERGE集計データと非集計データの両方を使用して6つの本番テーブルで実行するストアドプロシージャを実行します。(終了) または DataTableマージするデータを含む4つのオブジェクトを生成します。そのうちの3つにはCLRタイプが含まれていますが、残念ながらADO.NET TVPでは適切にサポートされていないため、文字列表現として組み込む必要があり、パフォーマンスが少し低下します。 TVPをストアドプロシージャにフィードします。ストアドプロシージャは、基本的に(7)と同じ処理を実行しますが、受信したテーブルを直接使用します。(終了) 結果はかなり近いものでしたが、データが1000行をわずかに超えた場合でも、TVPアプローチは最終的に平均してパフォーマンスが向上しました。 このインポートプロセスは何千回も連続して実行されるため、すべてのマージを完了するのにかかった時間(はい、時間)を数えるだけで、平均時間を取得するのは非常に簡単でした。 元々、平均的なマージが完了するまでにほぼ正確に8秒かかりました(通常の負荷の下で)。NetBIOSクラッジを削除し、に切り替えるとSqlBulkCopy、時間がほぼ正確に7秒に短縮されました。TVPに切り替えると、バッチあたりの時間がさらに5.2秒に短縮されました。これは、実行時間が時間単位で測定されるプロセスのスループットが35%向上するため、悪くはありません。また、SqlBulkCopy。よりも約25%向上しています。 私は実際、真の改善はこれよりもはるかに大きいとかなり確信しています。テスト中に、最終的なマージはもはやクリティカルパスではないことが明らかになりました。代わりに、すべてのデータ処理を実行していたWebサービスは、着信する要求の数に応じて座屈し始めていました。CPUもデータベースI / Oも実際には限界に達しておらず、重要なロックアクティビティはありませんでした。場合によっては、連続するマージの間に数秒のアイドル秒のギャップが見られました。わずかなギャップがありましたが、を使用するとはるかに小さくなりました(0.5秒程度)SqlBulkCopy。しかし、それはまた別の日の話になると思います。 結論:テーブル値パラメーターはBULK INSERT、中規模のデータセットで動作する複雑なインポート+変換プロセスの操作よりも実際に優れたパフォーマンスを発揮します。 プロステージングテーブルである人々の一部の不安を和らげるために、もう1つポイントを追加したいと思います。ある意味で、このサービス全体は1つの巨大なステージングプロセスです。プロセスのすべてのステップは徹底的に監査されるため、特定のマージが失敗した理由を特定するためのステージングテーブルは必要ありません(実際にはほとんど発生しませんが)。サービスにデバッグフラグを設定するだけで、デバッガーにブレークするか、データベースではなくファイルにデータをダンプします。 言い換えれば、私たちはすでにプロセスについて十分な洞察を持っており、ステージングテーブルの安全性を必要としません。そもそもステージングテーブルを用意した唯一の理由は、他の方法で使用しなければならなかったであろうすべてのステートメントINSERTとUPDATEステートメントをスラッシングしないようにするためでした。元のプロセスでは、ステージングデータはとにかくステージングテーブルに数分の1秒しか存在しなかったため、メンテナンス/メンテナンスの観点からは何の価値もありませんでした。 また、すべての操作をTVPに置き換えたわけではないことにも注意しBULK …

1
Jaro-WinklerとLevenshteinの距離の違いは?[閉まっている]
クローズ。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てるようにします。 6年前に閉鎖されました。 この質問を改善する 複数のファイルからの何百万ものレコードのあいまいマッチングを行う必要があるユースケースがあります。そのための2つのアルゴリズムを特定しました。Jaro-WinklerとLevenshteinの編集距離です。 両方を調べ始めたとき、2つの正確な違いが何であるかを理解することができませんでした。Levenshteinは2つの文字列間の編集数を示し、Jaro-Winklerは0.0から1.0の間の正規化されたスコアを提供しているようです。アルゴリズムがわかりませんでした。 どちらかのアルゴリズムを使用する必要があるため、この2つのアルゴリズムの根本的な違いを知る必要があります。 次に、この2つのアルゴリズムのパフォーマンスの違いについて知りたいと思います。

1
テキストを編集するための左右の矢印キーを高速化するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、話題のスタックオーバーフローのため。 7年前に閉鎖されました。 この質問を改善する それは私だけですか、それとも他の人はMacOSの左右の矢印キーがテキストの編集に異常に遅いことに気づいていますか? 私のWindowsマシンと比較すると、左/右矢印キーでカーソルを配置するのにMacでは2倍の時間がかかるようです。上/下矢印は十分に速いようですが、左/右矢印はただ這うだけです。最近使用したコマンドを編集しているターミナルで最も気づきましたが、ブラウザ形式のテキストで今気づいています。 これらのキーへの応答を高速化するために設定できるMac設定はありますか?

4
'perf stat'の結果のstalled-cycles-frontendおよびstalled-cycles-backendとは何ですか?
perf statの結果で、stalled -cycles-frontendとstalled-cycles-backendの意味を知っている人はいますか?インターネットで検索しましたが、答えが見つかりませんでした。ありがとう $ sudo perf stat ls Performance counter stats for 'ls': 0.602144 task-clock # 0.762 CPUs utilized 0 context-switches # 0.000 K/sec 0 CPU-migrations # 0.000 K/sec 236 page-faults # 0.392 M/sec 768956 cycles # 1.277 GHz 962999 stalled-cycles-frontend # 125.23% frontend cycles idle 634360 stalled-cycles-backend # 82.50% …

4
CはC ++よりも著しく高速です[クローズ]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 9年前に閉鎖されました。 私が理解している限り、すべてのスクリプト言語とコア科学プログラムは通常Cで書かれています。これにより、実装が煩雑になりますが、ポイントにまっすぐになります。 これらの人々がパフォーマンスを最大化したいと思っていることは理解していますが、C文字列とC構造体を使用することとC ++クラスを使用することには本当の違いがあります。C ++は、仮想関数を除いて同じように機能するようですが、クラス関数を1回格納し、そのクラスのすべてのインスタンスがその1つの関数を呼び出します。 Cを高速化する理由と、最速でなければならないpythonやsqliteなどのプロジェクトの顕著な違いは何ですか?
83 c++  c  performance 

8
AngularJSアプリのダイジェストサイクルのパフォーマンスを測定するにはどうすればよいですか?
anglejsダイジェストサイクルの期間を測定する簡単な方法は何ですか?ダイジェストサイクルのパフォーマンスを分析するにはさまざまな方法がありますが、それぞれに独自の落とし穴があります。 Chromeプロファイラー:詳細が多すぎて、ダイジェストサイクルを見つけやすい方法で分解しません Batarang(AngularJSブラウザープラグイン):オーバーヘッドが多すぎ、リフレッシュレートが遅く、大きなアプリで爆発します。 ...もっと良い方法があるはずですか?!1?

8
パフォーマンスとJavaの相互運用性について:ClojureとScala
私はすでにClojure対Scalaのさまざまな説明を読みましたが、どちらにも場所があることに気づきました。ClojureとScalaの両方を比較する場合、完全な説明が得られていない考慮事項がいくつかあります。 1.)2つの言語のどちらが一般的に速いですか?これは言語機能ごとに異なることは理解していますが、パフォーマンスの一般的な評価が役立つでしょう。例:Python辞書は本当に高速であることを私は知っています。しかし、全体として、Javaよりもはるかに遅い言語です。Clojureを使用して、この問題に遭遇したくありません。 2.)Javaとの相互運用性はどうですか?私がこれまで読んだことは、Scalaにはネイティブコレクションタイプがあるため、大規模なJavaコードベースと統合するのが少し不器用であるのに対し、ClojureはJavaクラスと相互運用するための単純な反復可能/反復子中心の方法に従います。これについてこれ以上の考え/詳細はありますか? 最終的に、それがclojureとscalaの間の十分に近い引き分けである場合、私は両方を試すかもしれません。Clojureの1つは、言語が非常に単純に見えることです。しかし、繰り返しになりますが、Scalaには非常に柔軟な型システムがあります。しかし、私はScalaが高速であることを知っています(複数の個人アカウントに基づく)。したがって、Clojureの速度が大幅に遅い場合は、後でではなく早く知りたいと思います。

2
numpyはFortranルーチンよりもはるかに高速なのはなぜですか?
シミュレーション(Fortranで記述)から温度分布を表す512 ^ 3配列を取得します。配列は、サイズが約1 / 2Gのバイナリファイルに保存されます。この配列の最小値、最大値、平均値を知る必要があります。とにかくFortranコードを理解する必要があるので、試してみることにし、次の非常に簡単なルーチンを思いつきました。 integer gridsize,unit,j real mini,maxi double precision mean gridsize=512 unit=40 open(unit=unit,file='T.out',status='old',access='stream',& form='unformatted',action='read') read(unit=unit) tmp mini=tmp maxi=tmp mean=tmp do j=2,gridsize**3 read(unit=unit) tmp if(tmp>maxi)then maxi=tmp elseif(tmp<mini)then mini=tmp end if mean=mean+tmp end do mean=mean/gridsize**3 close(unit=unit) 私が使用しているマシンでは、ファイルごとに約25秒かかります。それはかなり長いと私を驚かせたので、私は先に進んでPythonで次のことをしました: import numpy mmap=numpy.memmap('T.out',dtype='float32',mode='r',offset=4,\ shape=(512,512,512),order='F') mini=numpy.amin(mmap) maxi=numpy.amax(mmap) mean=numpy.mean(mmap) さて、もちろんこれはもっと速いと思っていましたが、本当に感動しました。同じ条件下で1秒もかかりません。平均は、私のFortranルーチンが見つけたもの(私も128ビットのfloatで実行したので、どういうわけかそれをもっと信頼しています)から外れていますが、有効数字の7桁程度にすぎません。 どうしてnumpyはこんなに速くなるのでしょうか?つまり、これらの値を見つけるには、配列のすべてのエントリを調べる必要がありますよね?私はFortranルーチンで非常に愚かなことをしているので、もっと時間がかかりますか? 編集: コメントの質問に答えるには: はい、32ビットと64ビットのfloatを使用してFortranルーチンを実行しましたが、パフォーマンスに影響はありませんでした。 iso_fortran_env128ビットのフロートを提供するものを使用しました。 …

21
お気に入りのプロファイリングツールは何ですか(C ++用)[クローズ]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 これまで、RationalQuantifyのみを使用してきました。IntelのVTuneについて素晴らしいことを聞いたことがありますが、試したことはありません。 編集:私は主にコードをインストルメント化するソフトウェアを探しています。それが非常に良い結果を得る唯一の方法だと思います。 参照: Windows上のネイティブC ++に適したプロファイラーは何ですか?

10
Laravelは本当にこれほど遅いですか?
Laravelを使い始めたばかりです。まだコードをほとんど書いていませんが、ページの読み込みに1秒近くかかります。 フレームワークのないアプリとNodeJSアプリに約2ミリ秒かかると、これは少し衝撃的です。Laravelは何をしているのですか?これは正常な動作ではありませんか?微調整が必​​要ですか?

8
SQL'like 'vs' = 'パフォーマンス
この質問は 私が疑問に思っていることを回避しますが、答えは正確にそれに対処していません。 一般に、ワイルドカードを使用する場合、「=」は「like」よりも高速であるように見えます。これは一般通念のようです。ただし、限られた数の異なる固定のハードコードされたvarchar識別子を含む列があり、それらの1つに一致するすべての行を選択するとします。 select * from table where value like 'abc%' そして select * from table where value = 'abcdefghijklmn' 'Like'は、最初の3文字をテストして一致を見つけるだけでよいのに対し、 '='は文字列全体を比較する必要があります。この場合、「like」には利点があり、他のすべての条件は同じであるように思われます。 これは一般的な学術的な質問として意図されているため、どのDBでも問題ありませんが、SQL Server2005を使用して発生しました。
82 sql  performance 

2
CSS3トランジション:「トランジション:すべて」は「トランジション:x」よりも遅いですか?
css3遷移プロパティのレンダリング速度について質問があります。 いくつかの要素があるとします。 div, span, a {transition: all} div {margin: 2px} span {opacity: .5} a:hover {background-position: left top} div:hover {margin: -100px} span:hover {opacity: 1} a:hover {background-position: -5px top} 1つの宣言を使用して、これらすべての要素のすべての遷移をターゲットにする方がはるかに効率的div, span, a {transition: all}です。しかし、私の質問は、各要素の特定の遷移プロパティをターゲットにするアニメーションレンダリングの滑らかさと迅速さの点で「高速」でしょうか?例えば: div {margin: 2px; transition: margin .2s ease-in} span {opacity: .5; transition: opacity .2s ease-in} a {background-position: left top; …

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