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

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

22
std :: vectorは単純な配列よりもはるかに遅いですか?
std::vector「配列として実装される」のは一般的な知恵だといつも思っていました。今日私は降りてそれをテストしました、そしてそうではないようです: テスト結果は次のとおりです。 UseArray completed in 2.619 seconds UseVector completed in 9.284 seconds UseVectorPushBack completed in 14.669 seconds The whole thing completed in 26.591 seconds これは約3〜4倍遅くなります。「vector数ナノ秒は遅くなるかもしれない」コメントを正当化しません。 そして私が使用したコード: #include <cstdlib> #include <vector> #include <iostream> #include <string> #include <boost/date_time/posix_time/ptime.hpp> #include <boost/date_time/microsec_time_clock.hpp> class TestTimer { public: TestTimer(const std::string & name) : name(name), start(boost::date_time::microsec_clock<boost::posix_time::ptime>::local_time()) { …
212 c++  arrays  performance  stl  vector 

19
複数の列にわたるDISTINCTのカウント
このようなクエリを実行するより良い方法はありますか? SELECT COUNT(*) FROM (SELECT DISTINCT DocumentId, DocumentSessionId FROM DocumentOutputItems) AS internalQuery この表の個別のアイテムの数を数える必要がありますが、個別のアイテムは2列以上です。 私のクエリは正常に機能しますが、1つのクエリのみを使用して(サブクエリを使用せずに)最終結果を取得できるかどうか疑問に思いました

13
.NETリフレクションのコストはどれくらいですか?
私は常に、反射がいかに悪いかを耳にします。私は通常、反射を避け、それなしでは問題を解決できない状況をめったに見つけませんが、私は思っていました... アプリケーションでリフレクションを使用したことがある人にとって、パフォーマンスヒットを測定しましたか、それは本当にそれほど悪いことですか?


8
プライベート静的メソッドを使用する利点
内部プライベートメソッドを持つクラスを作成するとき、通常はコードの重複を減らし、インスタンスフィールドを使用する必要はありませんが、メソッドをstaticとして宣言することにはパフォーマンスやメモリの利点がありますか? 例: foreach (XmlElement element in xmlDoc.DocumentElement.SelectNodes("sample")) { string first = GetInnerXml(element, ".//first"); string second = GetInnerXml(element, ".//second"); string third = GetInnerXml(element, ".//third"); } ... private static string GetInnerXml(XmlElement element, string nodeName) { return GetInnerXml(element, nodeName, null); } private static string GetInnerXml(XmlElement element, string nodeName, string defaultValue) { XmlNode node …
209 c#  performance 

30
なぜCはそんなに速いのか、なぜ他の言語はそれほど速くも速くもないのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4ヶ月前に閉鎖。 この質問を改善する StackOverflowポッドキャストを聞いていると、ジャブは「本物のプログラマ」がCで書いていることを思い起こし、Cは「マシンに近い」ため、はるかに高速です。以前のアサーションを別の投稿に残して、Cが他の言語よりも高速になることを可能にする特別な点は何ですか?または別の言い方をすると:他の言語がCと同じくらい高速に実行されるバイナリにコンパイルできないようにする方法は何ですか?
208 c  performance 

4
文字列の最初の文字を削除する最速の方法
次の文字列があるとします string data= "/temp string"; 最初の文字/を削除したい場合は、次のようなさまざまな方法で実行できます。 data.Remove(0,1); data.TrimStart('/'); data.Substring(1); しかし、実際にどれが最良のアルゴリズムを持っているのかわからないので、それをより速く実行します。 最高のもの、またはすべてが同じものはありますか?

6
文字列から1つの文字列へのリスト
あなたが持っているとしましょう: List<string> los = new List<string>(); このクレイジーな関数型の世界では、これらの1つがこれらを連結して1つの文字列を作成するのに最適である、これらの日に住んでいます。 String.Join(String.Empty, los.ToArray()); StringBuilder builder = new StringBuilder(); los.ForEach(s => builder.Append(s)); string disp = los.Aggregate<string>((a, b) => a + b); またはプレーンな古いStringBuilder foreach またはより良い方法はありますか?

2
最新のC ++でパフォーマンスを無料で取得できますか?
C ++ 11/14は、単にC ++ 98コードをコンパイルする場合でも、パフォーマンスを向上させることができると主張されることがあります。正当化は通常、移動のセマンティクスの線に沿っています。場合によっては、右辺値コンストラクターが自動的に生成されるか、STLの一部となることがあります。今、これらのケースが以前にRVOまたは同様のコンパイラ最適化によって実際にすでに処理されていたかどうか疑問に思っています。 私の質問は、新しい言語機能をサポートするコンパイラを使用して、変更なしでより高速に実行されるC ++ 98コードの実際の例を教えてもらえるかどうかです。コピーの省略を行うのに標準準拠のコンパイラーは必要ないことを理解しています。そのため、移動のセマンティクスによって速度が向上する可能性があります。 編集:明確にするために、私は新しいコンパイラが古いコンパイラよりも高速であるかどうかを尋ねているのではなく、コンパイラフラグに-std = c ++ 14を追加するコードがある場合、それはより高速に実行されます(コピーを避けますが、移動セマンティクス以外に何かを思い付くことができます、私も興味があります)

7
WebSocketが使用可能な場合にAJAXを使用する理由
私はしばらくWebSocketを使用していますが、Node ServerとWebSocketを利用して、大学の最終年度プロジェクト用のアジャイルプロジェクト管理ツールを作成することを選択しました。WebSocketを使用すると、アプリケーションが処理できる1秒あたりのリクエスト数が624%増加することがわかりました。 ただし、プロジェクトを開始して以来、セキュリティの抜け穴や、デフォルトでWebSocketを無効にすることを選択しているブラウザを読んでいます。 これは私に質問を導きます: WebSocketsがレイテンシとリソースオーバーヘッドを減らすというすばらしい仕事をしているように見えるのに、なぜAJAXを使用するのですか?AJAXがWebSocketsよりも優れている点はありますか?

2
高速テストのためにPostgreSQLを最適化する
典型的なRailsアプリケーションをSQLiteからPostgreSQLに切り替えています。 問題は、PGによりスペックの実行が遅くなることです。 SQLiteでは約34秒、PGでは約76秒で、2倍以上遅くなります。 そこで、コードを変更せずに、SQLiteと同等の仕様のパフォーマンスを実現するためにいくつかの手法を適用したいと思います(理想的には接続オプションを設定するだけで、おそらく不可能です)。 私の頭の上から明らかなことは次のとおりです。 RAMディスク(OSXでRSpecを使用した適切なセットアップは見れば良いでしょう) ログに記録されていないテーブル(データベース全体に適用できるため、すべてのスクリプトを変更する必要はありませんか?) ご存じかもしれませんが、私は信頼性とその他については気にしていません(ここではDBは使い捨てのものです)。 私はPGを最大限に活用し、可能な限り速くする必要があります。 ベストアンサーは、理想的には、それを行うためのトリック、セットアップ、およびそれらのトリックの欠点を説明します。 更新: fsync = off + full_page_writes = off時間のみを〜65秒(〜-16秒)に短縮しました。良いスタートですが、目標の34にはほど遠いです。 アップデート2:私はRAMディスクを使用しようとしましたが、パフォーマンスゲインは誤差の範囲内でした。だから、それだけの価値はないようです。 更新3:* 最大のボトルネックを発見したので、私の仕様はSQLiteの仕様と同じくらい高速に実行されました。 問題は、切り捨てを行ったデータベースのクリーンアップでした。どうやらSQLiteは速すぎます。 「修正」するには、各テストの前にトランザクションを開き、最後にロールバックします。 〜700テストのいくつかの数値。 切り捨て:SQLite-34秒、PG-76秒。 トランザクション:SQLite-17秒、PG-18秒。 SQLiteの2倍の速度向上。PGの4倍の速度増加。

9
gwtコンパイラを高速化するにはどうすればよいですか?
プロジェクトでGWTをより多く使用するようになり、GWTコンパイラーのパフォーマンスはますます煩わしくなっています。 ホストモードのブラウザーに重点を置き、後でGWTコンパイラーを実行する必要性を延期するなど、問題を軽減するために作業手順を変更し始めますが、これには独自のリスク、特に実際のブラウザの問題をキャッチするのは、私たちが望むよりもずっと遅くなります。 理想的には、GWTコンパイラー自体をより速くしたいのですが、かなり小さなアプリケーションをコンパイルするのに1分かかるのです。しかし、私はかなりナイーブな方法でコンパイルを使用しているので、いくつかの迅速かつ簡単な利益を得ることができると期待しています。 現在、ant。Antターゲットから、最大256mのヒープと大量のスタックスペースを持つJavaアプリケーションとしてcom.google.gwt.dev.Compilerを呼び出しています。コンパイラーはAntによってfork = trueと最新のJava 6 JREを使用して起動され、Java6の改善されたパフォーマンスを利用しようとします。メインのコントローラークラスをアプリケーションのクラスパスと一緒にコンパイラーに渡します。 速度を上げるために他に何ができますか?より多くの情報を提供して、何をすべきかを発見する時間を短縮できるでしょうか? 1つのブラウザーでのみコンパイルするように指示できることはわかっていますが、マルチブラウザーテストを実行する必要があるため、実際的ではありません。 この時点ですべての提案を歓迎します。
201 java  performance  gwt 

4
C ++標準では、iostreamのパフォーマンスの低下が義務付けられていますか?それとも、貧弱な実装を扱っているだけですか?
C ++標準ライブラリのiostreamのパフォーマンスが遅いことに言及するたびに、信じられないような波に遭遇します。それでも、iostreamライブラリコード(コンパイラの完全な最適化)に費やされた大量の時間を示すプロファイラー結果があり、iostreamからOS固有のI / O APIおよびカスタムバッファー管理に切り替えると、桁違いに改善されます。 C ++標準ライブラリはどのような追加の作業を行っていますか、それは標準で必要とされていますか、それは実際に役立ちますか?あるいは、一部のコンパイラーは、手動バッファー管理と競合するiostreamの実装を提供していますか? ベンチマーク 問題を解決するために、iostreamの内部バッファリングを実行する短いプログラムをいくつか作成しました。 バイナリデータをostringstream http://ideone.com/2PPYwに配置する バイナリデータをchar[]バッファに入れるhttp://ideone.com/Ni5ct http://ideone.com/Mj2Fivector<char>を使用してバイナリデータをback_inserter NEW:vector<char>シンプルなイテレーターhttp://ideone.com/9iitv NEW:バイナリデータをhttp://ideone.com/qc9QAに直接配置stringbuf NEW:vector<char>単純なイテレーターと境界チェックhttp://ideone.com/YyrKy ostringstreamとstringbufバージョンは、実行速度が非常に遅いため、実行される反復が少ないことに注意してください。 ideoneに、ostringstreamよりも約3倍遅いstd:copy+ back_inserter+ std::vector、および約15倍より遅いmemcpy生バッファへ。これは、実際のアプリケーションをカスタムバッファリングに切り替えたときのプロファイリング前後のプロファイルと一致しています。 これらはすべてメモリ内バッファーであるため、iostreamの速度が遅いディスクI / O、過度のフラッシュ、stdioとの同期、またはC ++標準ライブラリーの観察された速度の遅さを弁解するために使用するその他のものに起因するものではありません。 iostream。 他のシステムのベンチマークや、一般的な実装(gccのlibc ++、Visual C ++、Intel C ++など)が行うこと、および標準によってどの程度のオーバーヘッドが義務付けられているかについての解説を見るとよいでしょう。 このテストの根拠 多くの人々は、フォーマットされた出力にはiostreamがより一般的に使用されていると正しく指摘しています。ただし、これらは、バイナリファイルアクセス用のC ++標準によって提供される唯一の最新のAPIでもあります。しかし、内部バッファリングでパフォーマンステストを実行する本当の理由は、一般的なフォーマット済みI / Oに当てはまります:iostreamがディスクコントローラーにrawデータを供給できない場合、フォーマットを担当しているときに、どのようにして対応できるでしょうか? ベンチマークのタイミング これらはすべて、外側の(k)ループの反復ごとです。 ideone(gcc-4.3.4、不明なOSおよびハードウェア): ostringstream:53ミリ秒 stringbuf:27ミリ秒 vector<char>およびback_inserter:17.6ミリ秒 vector<char> 通常のイテレータの場合:10.6 ms vector<char> イテレータと境界チェック:11.4 ms char[]:3.7ミリ秒 私のラップトップ(Visual …

6
<script async =“ async” />をサポートするブラウザーはどれですか?
2009年12月1日、Googleは非同期Google Analyticsトラッキングのサポートを発表しました。 非同期追跡は、&lt;script&gt;タグのasyncディレクティブを使用して実現されます。 どのブラウザーがasyncディレクティブ(&lt;script async="async" /&gt;)をサポートし、どのバージョン以降ですか?

5
SQL Serverでのvarchar(MAX)とTEXTの使用
VARCHAR(MAX)データ型(2GBに近いcharデータを格納できる)は、TEXTSQL Server 2005およびNext SQL SERVERバージョンでのデータ型の推奨代替品であると私は読んだだけです。 列内で文字列を検索する場合、どの操作がより高速ですか? 列LIKEに対して句を使用していVARCHAR(MAX)ますか? WHERE COL1 LIKE '%search string%' TEXT列を使用して、この列に全文索引 / カタログを配置し、CONTAINS句を使用して検索しますか? WHERE CONTAINS (Col1, 'MyToken')

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