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

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

8
PythonはC ++より高速で軽量ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 Pythonの利点はコードの可読性と開発速度であると常に思っていましたが、時間とメモリの使用量はC ++の場合ほどではありませんでした。 これらの統計は私を本当に強く打った。 PythonとC ++の時間とメモリ使用量について、あなたの経験から何がわかりますか?

7
控えめなJavaScript:HTMLコードの上部または下部に<script>がありますか?
最近、YahooマニフェストのWebサイトの高速化に関するベストプラクティスを読みました。できる限り、JavaScriptのインクルードをHTMLコードの下部に配置することをお勧めします。 しかし、正確にはいつどこで? クローズする前&lt;/html&gt;か後か?そして何よりも、いつ&lt;head&gt;セクションに配置する必要がありますか?

7
x64 Javaでintよりも時間がかかるのはなぜですか?
Surface Pro 2タブレットでWindows 8.1 x64とJava 7アップデート45 x64(32ビットJavaがインストールされていない)を実行しています。 以下のコードは、iの型がlongの場合は1688ms、iがintの場合は109msかかります。64ビットJVMを備えた64ビットプラットフォームで、長い(64ビットタイプ)がintよりも桁違いに遅いのはなぜですか? 私の唯一の推測では、CPUは64ビット整数を32ビット整数よりも追加するのに時間がかかりますが、そうは思われません。ハスウェルはリップルキャリー加算器を使用していないと思います。 私はこれをEclipse Kepler SR1で実行しています。 public class Main { private static long i = Integer.MAX_VALUE; public static void main(String[] args) { System.out.println("Starting the loop"); long startTime = System.currentTimeMillis(); while(!decrementAndCheck()){ } long endTime = System.currentTimeMillis(); System.out.println("Finished the loop in " + (endTime - startTime) …

8
MySQLのORDER BY RAND()関数を最適化するにはどうすればよいですか?
クエリを最適化して、を調べますmysql-slow.log。 遅いクエリのほとんどにが含まれていますORDER BY RAND()。この問題を解決するための実際の解決策が見つかりません。MySQLPerformanceBlogで可能な解決策がありますが、これで十分だとは思いません。最適化が不十分な(または頻繁に更新されるユーザー管理の)テーブルでは機能しないか、-でPHP生成されたランダムな行を選択する前に2つ以上のクエリを実行する必要があります。 この問題の解決策はありますか? ダミーの例: SELECT accomodation.ac_id, accomodation.ac_status, accomodation.ac_name, accomodation.ac_status, accomodation.ac_images FROM accomodation, accomodation_category WHERE accomodation.ac_status != 'draft' AND accomodation.ac_category = accomodation_category.acat_id AND accomodation_category.acat_slug != 'vendeglatohely' AND ac_images != 'b:0;' ORDER BY RAND() LIMIT 1

6
map.get()を使用する場合、java Map.containsKey()を使用していますか?
私はしばらくの間、containsKey()メソッドの使用を控えjava.util.Map、代わりにからの結果に対してnullチェックを実行することがベストプラクティス内で許可されるかどうか疑問に思っていましたget()。 私の根拠は、値の2倍の検索を行うには冗長思われることである-のための最初containsKey()と再度のためにget()。 一方Map、最後のルックアップをキャッシュするほとんどの標準的な実装、またはコンパイラーが冗長性を排除できること、およびコードを読みやすくするために、containsKey()パーツを維持することが望ましい場合があります。 コメントありがとうございました。

16
メソッドに多くの引数を渡すためのベストプラクティス?
時々、多くの引数を受け取るメソッドを書く必要があります。例えば: public void doSomething(Object objA , Object objectB ,Date date1 ,Date date2 ,String str1 ,String str2 ) { } この種の問題が発生すると、引数をマップにカプセル化することがよくあります。 Map&lt;Object,Object&gt; params = new HashMap&lt;Object,Object&gt;(); params.put("objA",ObjA) ; ...... public void doSomething(Map&lt;Object,Object&gt; params) { // extracting params Object objA = (Object)params.get("objA"); ...... } これは良い方法ではありません。paramsをマップにカプセル化すると、完全に効率が低下します。良い点は、クリーンなシグネチャであり、変更が最も少ない他のパラメータを簡単に追加できることです。この種の問題のベストプラクティスは何ですか?

3
OFFSET / FETCH NEXTから行の総数を取得する
だから、私は自分のウェブサイトにページングを実装したいレコードの数を返す関数を持っています。これを実現するために、SQL Server 2012のオフセット/フェッチ次を使用することが推奨されました。私たちのウェブサイトには、レコードの総数とその時点でどのページを表示しているかを示すエリアがあります。 以前は、レコードセット全体を取得しており、プログラムでページングを構築することができました。しかし、FETCH NEXT X ROWS ONLYでSQLを使用すると、返されるのはX行だけなので、合計レコードセットが何であるか、および最小ページと最大ページを計算する方法がわかりません。これを行うには、関数を2回呼び出し、最初の行で行数をカウントし、次に2番目の行をFETCH NEXTで実行するしかありません。クエリを2回実行しないより良い方法はありますか?パフォーマンスを落とすのではなく、スピードを上げることを目指しています。

6
Javascriptセットとアレイのパフォーマンス
セットはJavascriptに比較的新しいためかもしれませんが、StackOやその他の場所で、Javascriptの2つのパフォーマンスの違いについて説明している記事を見つけることができませんでした。では、パフォーマンスの観点から、2つの違いは何ですか?具体的には、削除、追加、反復に関してです。

6
コンパイラーは、他のタイプのループと比較して、do-whileループに対してより優れたコードを生成しますか?
zlib圧縮ライブラリ(特にChromiumプロジェクトで使用されています)には、Cのdo-whileループがほとんどのコンパイラで「より良い」コードを生成することを示すコメントがあります。これが表示されるコードのスニペットです。 do { } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &amp;&amp; *(ushf*)(scan+=2) == *(ushf*)(match+=2) &amp;&amp; *(ushf*)(scan+=2) == *(ushf*)(match+=2) &amp;&amp; *(ushf*)(scan+=2) == *(ushf*)(match+=2) &amp;&amp; scan &lt; strend); /* The funny "do {}" generates better code on most compilers */ https://code.google.com/p/chromium/codesearch#chromium/src/third_party/zlib/deflate.c&amp;l=1225 ほとんどの(または任意の)コンパイラがより優れた(たとえば、より効率的な)コードを生成するという証拠はありますか? 更新: 元の著者の1人であるMark Adlerがコメントに少しコンテキストを与えました。

19
どうすればグーグルはそんなに速くなることができますか?
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 Googleが非常に高速にクエリを処理できるようにするテクノロジーとプログラミングの決定は何ですか? 私は何かを検索するたびに(1日に数回のうちの1つ)、1秒近くまたは1秒未満で結果を提供する方法をいつも驚かせます。これを実現するために、どのような構成とアルゴリズムを導入できますか? 補足:デスクトップアプリケーションを置いて自分のマシンで使用したとしても、おそらくGoogleの半分の速度ではないと考えるのは、圧倒的な考え方です。私が言うことを学び続けなさい。 提供されたすばらしい答えとポインタのいくつかを以下に示します。 Googleプラットフォーム マップリデュース 慎重に作成されたアルゴリズム ハードウェア-クラスターファームと大量の安価なコンピューター キャッシュと負荷分散 Googleファイルシステム

4
memmpyよりmemmoveが速いのはなぜですか?
memmove(3)で時間の50%を費やすアプリケーションのパフォーマンスホットスポットを調査しています。アプリケーションは、何百万もの4バイト整数をソートされた配列に挿入し、memmoveを使用してデータを「右に」シフトし、挿入された値のためのスペースを作ります。 メモリのコピーは非常に高速であると私は予想しており、memoveに多くの時間が費やされていることに驚きました。しかし、それからmemmoveは、メモリの大きなページをコピーするのではなく、タイトなループで実装する必要がある重複領域を移動するため、遅いと考えました。memcpyとmemmoveの間にパフォーマンスの違いがあるかどうかを確認するために、小さなマイクロベンチマークを書きました。memcpyが勝つことを期待しています。 私は2つのマシン(コアi5、コアi7)でベンチマークを実行し、memmpyがmemcpyよりも実際に高速であることを確認しました。古いコアi7では、2倍近くも高速です!今、私は説明を探しています。 これが私のベンチマークです。memcpyで100 mbをコピーし、memmoveで約100 mb移動します。ソースと宛先が重複しています。発信元と宛先のさまざまな「距離」が試されます。各テストは10回実行され、平均時間が印刷されます。 https://gist.github.com/cruppstahl/78a57cdf937bca3d062c Core i5(Linux 3.5.0-54-generic#81〜precise1-Ubuntu SMP x86_64 GNU / Linux、gccは4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5)での結果です。角かっこ内の数値はソースと宛先の間の距離(ギャップサイズ): memcpy 0.0140074 memmove (002) 0.0106168 memmove (004) 0.01065 memmove (008) 0.0107917 memmove (016) 0.0107319 memmove (032) 0.0106724 memmove (064) 0.0106821 memmove (128) 0.0110633 MemmoveはSSEに最適化されたアセンブラーコードとして実装され、後ろから前へコピーします。ハードウェアプリフェッチを使用してデータをキャッシュにロードし、128バイトをXMMレジスタにコピーして、宛先に格納します。 (memcpy-ssse3-back.S、1650行目以降) L(gobble_ll_loop): prefetchnta -0x1c0(%rsi) prefetchnta -0x280(%rsi) prefetchnta -0x1c0(%rdi) …
89 c++  c  performance  memory 

12
匿名関数の使用はパフォーマンスに影響しますか?
私は疑問に思っていましたが、Javascriptで名前付き関数と無名関数を使用することの間にパフォーマンスの違いはありますか? for (var i = 0; i &lt; 1000; ++i) { myObjects[i].onMyEvent = function() { // do something }; } vs function myEventHandler() { // do something } for (var i = 0; i &lt; 1000; ++i) { myObjects[i].onMyEvent = myEventHandler; } 1つ目は、めったに使用されない関数でコードが乱雑にならないため、より整理されていますが、その関数を複数回再宣言することは重要ですか?

4
レジスターが非常に高速である場合、それ以上の数を用意しないのはなぜですか?
32ビットでは、8つの「汎用」レジスタがありました。64ビットでは、量は2倍になりますが、64ビットの変更自体とは無関係のようです。 さて、レジスタが非常に高速である(メモリアクセスがない)場合、自然にそれらの数が増えないのはなぜですか?CPUビルダーは、CPUにできるだけ多くのレジスターを機能させるべきではありませんか?私たちが持っている量しか持っていない理由に対する論理的な制限は何ですか?

11
クエリの説明プランをどのように解釈しますか?
SQLステートメントがどのように実行されているかを理解しようとするときに、説明計画を確認することが推奨される場合があります。説明プランを解釈する(理解する)際に実行する必要があるプロセスは何ですか?「ああ、これは見事に機能していますか?」対「ああ、そうじゃない」

4
JavaはC ++のstd :: vectorよりも配列の方が8倍高速です。何を間違えたのですか?
サイズが変更されないいくつかの大きな配列を持つ次のJavaコードがあります。私のコンピューターでは1100ミリ秒で実行されます。 同じコードをC ++に実装して使用しましたstd::vector。 まったく同じコードを実行するC ++実装の時間は、私のコンピューターでは8800ミリ秒です。これがゆっくり実行されるように、私は何を間違えましたか? 基本的に、コードは次のことを行います。 for (int i = 0; i &lt; numberOfCells; ++i) { h[i] = h[i] + 1; floodedCells[i] = !floodedCells[i]; floodedCellsTimeInterval[i] = !floodedCellsTimeInterval[i]; qInflow[i] = qInflow[i] + 1; } サイズが約20000のさまざまな配列を反復処理します。 次のリンクの下に両方の実装があります。 Java:https : //ideone.com/R8KqjT C ++:https : //ideone.com/Lu7RpE (ideoneでは、時間制限のため、ループを2000回ではなく400回しか実行できませんでした。ただし、ここでも3回の違いがあります)

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