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

アプリケーションのパフォーマンスの向上に関する質問です。これは、ソフトウェアアーキテクチャの選択からアルゴリズムの選択までさまざまです。

8
JavaはC / C ++と比較してパフォーマンスを「微調整」するのがはるかに難しいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 JVMの「魔法」は、プログラマーがJavaのマイクロ最適化に与える影響を妨げますか?私は最近C ++で読んだことがありますが、データメンバーの順序が最適化を提供できる場合があります(マイクロ秒環境で許可されます)。 まともなアルゴリズムがより大きな速度向上を提供することを感謝しますが、正しいアルゴリズムを取得すると、JVM制御のためにJavaを微調整するのが難しくなりますか? そうでない場合は、Javaで使用できるトリックの例を(単純なコンパイラフラグのほかに)挙げてください。


4
ハイブリッドハードドライブはプログラミングエクスペリエンスを向上させますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 私は自分の開発PCがいかに手ごわいのにうんざりしています。Core2 Duo、2GB RAM、Seagate ST3500320AS HDDです。トップモデルではなく、かなりまともなものです。 通常、Visual Studio 2008のいくつかのコピーを開きます。Firefox、Outlook、MSDNの多くのタブに加えて、デバッグするプログラムは非常に巨大です。 、5 GBのページファイル使用量。 上記のすべてのソフトウェアは、非常に迷惑なほどに遅くなります。私がVisual Studioでメニューバーをクリックしたようなものです。メニューを開くだけでなく、たとえば10秒間ハードディスクが動作します。 魔法の「考えさせない」解決策が必要です-一度インストールすると、ラグが消えるか、少なくとも大幅に減少します。それほど高価ではないはずです-ハイブリッドドライブの現在の価格のようなものです。 ハイブリッドドライブは魔法のように私の問題を完全に克服するのに役立ちますか?同様の目的でハイブリッドドライブを使用した経験はありますか?

5
小さなオブジェクトの作成を最小限に抑える必要がありますか?
多数の(1000を超える)小さなオブジェクトを頻繁に作成するものを作成する場合、パフォーマンスのためにそれを最小化する必要がありますか?特に、ローエンドからハイエンドのデスクトップ、さらにはモバイルまで、どのシステムで実行されるかわからない場合。モバイルの場合、多くのオブジェクトを作成するとパフォーマンスが少し低下すると聞きましたが、それがどれほど本当かはわかりません。 この考えをよく示す例があります。グラフィックプログラムでは、理想的にはと呼ばれるすべての描画に使用されるメソッドがあるとしましょうdrawPixel(Point)。1秒間に60回以上呼び出される可能性のあるゲームのように、作成されるポイントは1000になり、頻繁に繰り返される場合があります。または、drawPixel(int x, int y)多くのポイントオブジェクトの作成を最小限に抑えるために使用できます。 オブジェクト指向の設計では、Pointを使用することをお勧めします。ただし、プリミティブ型を使用するとパフォーマンスが向上する場合があります。ほとんどの場合、パフォーマンスの向上はごくわずかですが、モバイルマシンや古いマシンなどについてはよくわかりません。このようなことを行うことによるパフォーマンスの向上は何ですか?それは考慮に入れられるべきものですか?

5
Pythonスクリプトが同等のC ++プログラムと同じくらい高速になるのを妨げる技術的な制限や言語機能はありますか?
私は長年のPythonユーザーです。数年前、私はC ++の学習を始めて、速度の点でC ++が何を提供できるかを確認しました。この間も、プロトタイピングのツールとしてPythonを使い続けました。これは良いシステムのように思われました:Pythonによるアジャイル開発、C ++での高速実行。 最近、私はますますPythonを使用しており、この言語を使用して以前にすぐに使用した落とし穴とアンチパターンをすべて回避する方法を学びました。特定の機能(リスト内包表記、列挙など)を使用するとパフォーマンスが向上することは私の理解です。 しかし、Pythonスクリプトが同等のC ++プログラムと同じくらい高速になるのを妨げる技術的な制限や言語機能はありますか?

7
スケーラビリティについて考え始めるのはいつですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 面白いけどひどい問題があります。新しい(iPhone)アプリを起動しようとしています。これは、自分のカスタムバックエンドで実行されるターンベースのマルチプレイヤーゲームです。しかし、私は立ち上げることを恐れています。 どういうわけか、私はそれが何か大きなものになるかもしれないと思います、そしてその人気は私の貧しい孤独な単一サーバー+ MySQLデータベースを殺すと思います。 一方では、それが成長している場合は、準備を整えて、スケーラブルなインフラストラクチャーをすでに準備しているほうがよいと考えています。 一方、私はそれを世界に送り出し、何が起こるかを見たいと思っています。 私は「時期尚早な最適化がすべての悪の根源である」などの記事をよく読んだり、ツールを手元に置いて今すぐキラーゲームを構築し、後でスケーラビリティなどの他のことについて心配するべきだと言っています。 私はこれについて専門家やこれを経験した人からこれについていくつかの意見を聞きたいです。ありがとう!

5
巨大なファイルに対するgreppingのパフォーマンスの向上
300,000行を超えるFILE_Aと3,000万行を超えるFILE_Bがあります。FILE_Aの各行をFILE_Bで確認し、grepの結果を新しいファイルに書き込むBashスクリプトを作成しました。 このプロセス全体に5時間以上かかります。 スクリプトのパフォーマンスを向上させるにはどうすればよいですか? grep -F -m 1grepコマンドとして使用しています。FILE_Aは次のようになります。 123456789 123455321 FILE_Bは次のようになります。 123456789,123456789,730025400149993, 123455321,123455321,730025400126097, したがって、Bashではwhile、FILE_Aの次の行を選択して、FILE_Bでそれを調べるループがあります。パターンがFILE_Bで見つかったら、result.txtファイルに書き込みます。 while read -r line; do grep -F -m1 $line 30MFile done < 300KFile

6
GPUでの実行から恩恵を受けた汎用アルゴリズムの例?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 CPUよりもGPUで1桁速く実行できることが証明されている(非グラフィック関連の意味の)汎用アルゴリズムの例を探しています。これらの例を使用して、GPUに実装できる他のアルゴリズムについて創造的に考えます。


10
ソフトウェアの速度はどのくらいの頻度でお客様の目に見えますか?
理論的には、顧客はソフトウェアのパフォーマンスの向上を直接体験して感じることができるはずです。 実際には、改善が十分に目立たない場合があります。そのため、改善から収益を得るには、顧客を引き付けるためにマーケティングで見積もり可能なパフォーマンス数値を使用する必要があります。 知覚されるパフォーマンス(GUIレイテンシなど)とサーバー側のパフォーマンス(マシン、ネットワーク、インフラストラクチャなど)の違いはすでにわかっています。 プログラマーが他のプログラマーではなく、マネージャーや顧客であるパフォーマンス分析を「作成」するために、プログラマーが余分な時間を費やす必要がある頻度はどれくらいですか?

4
Javaで区切られた文字列を分割する最も簡単な方法
区切られた文字列で複数列のソート機能を提供するコンパレータを構築しています。私は現在、生の文字列をトークンに分割するための好ましい選択肢として、Stringクラスのsplitメソッドを使用しています。 これは、生の文字列を文字列配列に変換するのに最適な方法ですか?何百万もの行を並べ替えるので、アプローチが重要だと思います。 それはうまく動作するようで非常に簡単ですが、Javaでより高速な方法があるかどうかは不明です。 これが私のコンパレータでのソートの仕組みです: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } さまざまなアプローチのベンチマークを行った後、信じられないかもしれませんが、splitメソッドは最新バージョンのJavaを使用するのが最も速かったです。ここに私の完成したコンパレータをダウンロードできます:https : //sourceforge.net/projects/multicolumnrowcomparator/

2
表現力とプロダクションバグ率に相関する、プログラミング言語ランタイムのメモリ消費量の比較研究はありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 多くの比較研究があり、1つの言語または別の言語を使用して構築されたアプリケーションのランタイムパフォーマンスに関しては、オンラインで入手できます。企業によって駆動されるものもあれば、学術的なものもあれば、個人的な実験報告だけのものもあります。 また、次のようなプログラミング言語とそのツールの副作用に関する比較研究のかなりのシェアを得ています。 ビルド時間、 ポストプロダクションバグ検出の可能性、 表現力、 等... しかし、私は最近、他の何よりもプログラムのメモリ消費量にますます困惑しています。これは、ムーアの法則が生のパフォーマンスに関して私たちの側にある一方で、他のボトルネックがより重要であることに気づくようになったという事実から来ている可能性があります。それと、ハードウェアを頻繁に更新することはあまりありません。「古い」もの(4 GBのRAMを搭載した2005〜2006年の3.6 GHz Pentium 4を読んでいます)があるため、それらからすべてのジュースを搾り出すために大きなトラブルを経験することを私に要求します(OS、UIの選択、サービスとデーモンの微調整、タスクなどに使用するアプリケーションの選択...)。非常に正直に言うと、ときどき起動しtopたりprocexp、最も無害なプログラムが使用しているメモリを見て涙を流したりします。 私は上記の方向に押し続け、基本的に自分自身と使用するプログラムを制限しようとすることでこれに対処できます(その理由から、私はcliプログラムを非常に愛しています)、しかし、私は考えるしかありませんたぶん私たちはそれを間違っているのです。 現代的なニーズのための現代的なツール もちろん、高水準言語は間違いなくより優れており、それらの重荷の価値を正当化します。いくつかの設計上の選択は、多くのツールチェーンで、当時は十分な(またはおそらく意図された)理由で行われました。共有ライブラリ、メモリモデル、プリプロセッサ、タイプシステムなど...しかし、最新のハードウェアでは、他のものよりも実行可能性が高いものもあるので、この問題に関するいくつかの深刻な研究に興味があります。 ですから、私の質問は、ベンチマークゲームなどの言語の基本的なランタイムメモリ消費量の比較に焦点を当てたペンダントがあるのでしょうか。 さらに、これを他のパラメーターと相互参照するいくつかの研究がありますか(たとえば、この記事が他の基準についてもベンチマークゲームに基づいて行ったのと同様)。

4
C#でアンマネージセーフコードを使用しないのはなぜですか
C#には、チェックされていないコードを実行するオプションがあります。マネージコードの方がはるかに安全であり、多くの問題を克服できるため、通常はそうすることはお勧めしません。 ただし、コードでエラーが発生しないことが確かで、メモリの処理方法がわかっている場合、なぜ(高速コードが好きな場合)なぜ一般的なアドバイスに従うのでしょうか。 非常に高速なビットマップ操作を必要とするビデオカメラ用のプログラムを書いたので、これは不思議に思っています。私はいくつかの高速グラフィカルアルゴリズムを自分で作成し、アンマネージコードを使用してビットマップ上で優れた動作をしました。 一般的に、メモリリークやクラッシュのリスクがないことが確かな場合は、アンマネージコードをより頻繁に使用しないのはなぜでしょうか。 PS私の経歴:このプログラミングの世界に少し入って、私は一人で(数年はそうしています)、このソフトウェア設計の質問がそれほど奇妙ではないことを願っています。先生のように、そんなことを聞​​いてくれる人はあまりいません。

4
「コンパイルして、CPUが間違った処理を実行しないようにしたかった」という文の意味は何ですか。
この記事を読んでいました。次の段落があります。 そして、Scalaは高速であることが判明しましたか?さて、あなたの高速の定義は何ですか?ほぼJavaと同じくらい高速です。CやAssemblyほど高速である必要はありません。PythonはRubyよりも大幅に高速ではありません。同時実行性を活用して、より少ないマシンでより多くのことを実行したいと考えました。それをコンパイルして、間違った処理を行っているCPUを焼き付けないようにしたかったのです。 最後の文の意味を探しています。インタプリタ言語はCPUにどのようにして「間違った」処理をさせるのでしょうか?

10
フレームワークをパフォーマンスヒットと見なしている同僚と通信する方法
一般的な応答が「jquery」などの包括的ステートメントである場合、「高度に最適化され、クロスブラウザーと互換性があるためjQueryを使用する必要がある」または「エンティティフレームワークはクールであり、モデルが自動的に処理されるのでクールです」などのアイデアをどのように販売できますか。十分に機能しない」または「エンティティが必要なのは、10で十分な場合、エンティティはテーブルに12列を取り込む」でしょうか。 私は、経験を通して開発した公理を信頼する傾向がある実用的な人です(目に見える減速があるまではパフォーマンスの問題ではありません)。他の極端が当てはまる特定の「カテゴリ」があるかどうかはわかりませんが、他に証明されない限り、またはここで通信を開始する場所まで、すべてがパフォーマンスの問題です。

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