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

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

3
Clang / LLVMはプライムタイムの準備ができていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 Clangはgccの代わりに使用できますか?その上であなたの経験は何ですか?まだどのような欠点がありますか? コンパイルのパフォーマンスはgccよりも非常に優れていますが、実行時に生成されるコードのパフォーマンスについてはどうでしょうか。 LinuxまたはWindowsで実行するためのフロントエンド(IDE)として優れたツールはありますか? 編集:私はCコンパイラを意味します。C ++はまだあまり良くありません。

2
ヒップホップ仮想マシン(HHVM)は、理論的にどのようにPHPランタイムのパフォーマンスを向上させますか?
高いレベルから、Facebookなどはどうですか。Hip Hop仮想マシンでPHPのパフォーマンスを向上させるために使用しますか? 従来のzendエンジンを使用してコードを実行するのとどう違うのですか?これは、型がオプションで事前最適化手法を可能にするハックで定義されているためですか? 私の好奇心は、HHVMの採用というこの記事を読んだ後で生じました。


4
C ++でのスレッド間の高速メッセージパッシングのためのメモリ管理
2つのスレッドがあり、互いに非同期でデータメッセージを非同期に送信することによって通信するとします。各スレッドには、ある種のメッセージキューがあります。 私の質問は非常に低いレベルです。メモリを管理する最も効率的な方法として何が期待できますか?私はいくつかの解決策を考えることができます: 送信者はを介してオブジェクトを作成しますnew。受信者の呼び出しdelete。 メモリプーリング(メモリを送信者に転送するため) ガベージコレクション(Boehm GCなど) (オブジェクトが十分に小さい場合)ヒープ割り当てを完全に回避するために値でコピー 1)は最も明白なソリューションなので、プロトタイプに使用します。おそらくそれはすでに十分であるということです。しかし、私の特定の問題とは関係なく、パフォーマンスを最適化する場合、どの手法が最も有望かと思います。 特にスレッド間の情報の流れに関する追加の知識を使用できるので、プールは理論的には最高だと思います。でも、それが一番難しいのも怖いです。たくさんのチューニング... :-( ガベージコレクションは後で(ソリューション1の後)非常に簡単に追加できるはずであり、非常にうまく機能すると期待しています。したがって、1)が非効率的であることが判明した場合、それが最も実用的な解決策であると思います。 オブジェクトが小さくてシンプルな場合は、値によるコピーが最も高速な場合があります。ただし、サポートされるメッセージの実装に不必要な制限を強いることを恐れているので、避けたいと思います。

3
JVMメモリを適切な方法で監視するにはどうすればよいですか?
忙しい時間帯でも、本番環境でオーバーヘッドの少ない方法でJVMメモリモニターを行う方法を考えています。 本番環境に2つのtomcatアプリサーバーがあり、それらの背後に負荷分散が設定されているとします。jvmメモリー統計を表示できる場合は、OOMの問題が発生するサーバーへのリクエストの送信を停止するようにロードバランスに指示できます。これは理にかなっていますか?JconsoleまたはVisualVMがより多くのパフォーマンスリソースを消費するのは私の選択ではありません。

4
SSDを使用してVS 2010のパフォーマンスを向上させる[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 ソリッドステートハードドライブでVisual Studio 2010を使用してパフォーマンスの改善をインターネットで検索した後、さまざまな意見をたくさん聞きました。 SSDを使用してもメリットはあまりないと多くの人が言いましたが、対照的に、まったく反対の意見がありました。私は対照的な意見に少し混乱しており、SSDを購入することが違いを生むかどうかを実際に決定することはできません。 この問題についてどのような経験があり、どのSSDを使用しましたか?

5
パフォーマンスを低下させることなく、Pimplバリエーションを実装できますか?
pimplの問題の1つは、それを使用するとパフォーマンスが低下することです(追加のメモリ割り当て、不連続なデータメンバー、追加の間接参照など)。pimplのすべての利点が得られないという犠牲を払ってこれらのパフォーマンスのペナルティを回避する、pimplイディオムのバリエーションを提案したいと思います。アイデアは、クラス自体にすべてのプライベートデータメンバーを残し、プライベートメソッドのみをpimplクラスに移動することです。基本的なpimplと比較した場合の利点は、メモリが連続している(追加の間接参照がない)ことです。pimplをまったく使用しない場合と比較した場合の利点は次のとおりです。 プライベート関数を非表示にします。 これらのすべての関数が内部リンケージを持ち、コンパイラーがより積極的に最適化できるように構造化できます。 したがって、私の考えは、pimplをクラス自体から継承させることです(私は少し奇妙に聞こえますが、我慢してください)。次のようになります。 Ahファイル: class A { A(); void DoSomething(); protected: //All private stuff have to be protected now int mData1; int mData2; //Not even a mention of a PImpl in the header file :) }; A.cppファイル: #define PCALL (static_cast<PImpl*>(this)) namespace //anonymous - guarantees internal linkage { struct PImpl …

1
プロファイリングツールが使用できない場合、プログラムのパフォーマンスを最適化するにはどうすればよいですか?
現在、パフォーマンスを改善したいOpenGlプログラムに取り組んでいます。パフォーマンスは大丈夫ですが、強力な専用GPUでは理想的ではありませんが、統合グラフィックス(<10 fps)ではひどいです。通常のプログラム(CPUベース、OpenGlまたは他のGPU APIなし)では、プログラムでプロファイラー(おそらくCLionに組み込まれているもの)を実行し、ほとんどの時間を費やしている場所を確認してから、より良いアルゴリズムで作業しますそれらのエリアの場合、またはそのエリアが呼び出される量を減らす方法を見つけます。 OpenGlプログラムでこの手法を使用すると、メインスレッド(最適化したいスレッド)でのプログラムの時間の大部分(約86%)がOpenGlドライバーの.soファイルに費やされていることがわかります。さらに、プログラムの実行中のCPU使用率は非常に低いですが、GPU使用率は95%から100%の間で停止します。これらの情報を総合すると、ボトルネックがGPUにあるため、最適化する必要があることがわかります。 ここで問題が発生します。ただし、プロファイラーを使用して私の最適化を導く通常のテクニックは、特定のGPUプロファイラーがないと機能しません。そのため、GPU処理時間が費やされている場所を教えてくれるプロファイラーを見つけるために、いくつかの調査を行いました。リモートで使用できるものは何も見つかりませんでした。すべてがWindowsのみ(Linuxのみを実行しており、プログラムはまだWindowsに移植されていません-ずっと先までは移植されません)であるか、更新されていないか、および/またはこのプロジェクトです。 そのため、私は質問します。関連するプロファイラーが存在しない場合、プログラムのパフォーマンスをどのように最適化できますか?問題がどこにあるのかを推測し、そこから最適化を試みましたが、最適化(錐台カリング)によってGPUの作業が約半分になっていることが確認できたとしても、違いはありませんでした。良い答えは、Linux上のOpenglに適用可能なプロファイリング手法を提供するか、プロファイラーなしで機能する手法を提供することです。

2
Eclipseコレクションを排他的に使用することに不利な点はありますか?
私のアプリケーションは非常に大きな整数のコレクションで動作するため、Eclipseコレクションはプリミティブなコレクションであるため、非常に便利なフレームワークのように見えます。私はすでにテストしましたが、パフォーマンスとメモリの大幅な改善が見られて嬉しいです-JDKコレクションを完全に廃止することを検討しているほどです(アプリケーションの一部で、改善がまったく目立たない場合でも)-ほとんど一貫性を保ち、1つのコレクションフレームワークのみを使用するため。 しかし、それは本当であるには良すぎるように聞こえるかもしれません-多分私はEclipseのJDKのコレクションを捨てることに関して重要な欠点を見逃しています。 私に起こる唯一のことは、コレクションに関して将来のJavaの更新/機能が何であれ、Eclipseがそれに適応するまで、Javaを利用できない可能性があるということです。 Eclipseコレクションに完全に移行したくない理由はありますか?

6
mallocの効率と実装の違いは?
私が使用している場合はmalloc、ないmallocにかかわらず、常にそれが配分されているものと同じアルゴリズムを使用するか、それがデータを見て、appriopriateアルゴリズムを選択しますか? より効率的なアルゴリズムを選択することにより、mallocをより速くまたはよりスマートにすることができますか?私のテストではmalloc、テスト結果が正しければ、Ubuntuの組み込み公式システムは学校プロジェクトよりも10倍遅くなります。キャッチとは何ですか?malloc最適化する必要があるため、テストでのパフォーマンスが非常に悪いことに驚いています。常に同じアルゴリズムを使用していますか?のリファレンス実装はありmallocますか?のソースを確認したい場合malloc、どこを見ればよいですか?私が実行するテストは次のとおりです。 /* returns an array of arrays of char*, all of which NULL */ char ***alloc_matrix(unsigned rows, unsigned columns) { char ***matrix = malloc(rows * sizeof(char **)); unsigned row = 0; unsigned column = 0; if (!matrix) abort(); for (row = 0; row < rows; row++) { matrix[row] = …
8 c  performance  malloc 

1
EAVにMySql 5.7 JSON列を使用する
私はeコマース製品を開発しており、すべての機能を実装できたため、ユーザーが製品の追加属性を作成できるようになりました。現在、私には2つのオプションがあります。 EAV EAVは主に眉をひそめていますが、Magentoで動作するようです。しかし、すべての頭痛を調査した後、それを使用するのには少し気が進まなくなります MySql 5.7でJSON列を使用する これはかなり新しいものであり、他のどこにも実装されていないので、JSON属性を照会した結果として全テーブルスキャンを実行するのは大変です。しかし、このMySql 5.7 JSONを読んだ後、彼らはJSONの使用を推奨しているようです。そして、この実用的なMySqlスキーマアドバイスのようなものを実装するよりも、それほど面倒ではありません。 私の質問は、NoSQLは私にとってオプションではないので、属性を格納するJSON列の方法を使用することに偏っていますが、EAVテーブルを使用するよりも深刻な欠点があります。

5
DBのパフォーマンスを考慮して複雑なREST APIを設計するにはどうすればよいですか?
REST APIの設計方法に関するいくつかのチュートリアルに従ってきましたが、まだいくつかの大きな疑問符があります。これらのチュートリアルはすべて、比較的単純な階層のリソースを示しています。これらのチュートリアルで使用されている原則が、より複雑な階層にどのように適用されるかを知りたいのです。さらに、彼らは非常に高い/建築レベルにとどまります。永続層は言うまでもなく、関連するコードはほとんど表示されません。Gavin Kingが言ったように、私は特にデータベースのロード/パフォーマンスについて心配しています: 開発のすべての段階でデータベースに注意を払えば、労力を節約できます アプリケーションがのトレーニングを提供するとしますCompanies。Companies持っDepartmentsていOfficesます。Departments持っていEmployeesます。Employees持っているSkillsとCoursesし、特定のLevel特定のスキルのは、いくつかのコースのために署名することができるように要求されています。階層は次のとおりですが、 -Companies -Departments -Employees -PersonalInformation -Address -Skills (quasi-static data) -Levels (quasi-static data) -Courses -Address -Offices -Address パスは次のようになります。 companies/1/departments/1/employees/1/courses/1 companies/1/offices/1/employees/1/courses/1 リソースを取得する したがって、会社を返すときに、階層全体を返すことはできませんcompanies/1/departments/1/employees/1/courses/1+ companies/1/offices/../。部門または展開された部門へのリンクのリストを返す可能性があり、このレベルでも同じ決定を行う必要があります。部門の従業員または展開された従業員へのリンクのリストを返しますか?それは部門や従業員などの数に依存します。 質問1:私の考えは正しいですか。「階層をどこで切るか」は、私がしなければならない典型的なエンジニアリング上の決定ですか ここで、尋ねられたときGET companies/idに、部署のコレクションへのリンクのリストと展開されたオフィス情報を返すことにします。私の会社には多くのオフィスがないので、テーブルOfficesと一緒に参加するAddressesことは大したことではありません。応答の例: GET /companies/1 200 OK { "_links":{ "self" : { "href":"http://trainingprovider.com:8080/companies/1" }, "offices": [ { "href": "http://trainingprovider.com:8080/companies/1/offices/1"}, { "href": "http://trainingprovider.com:8080/companies/1/offices/2"}, { "href": …

2
リストよりもPythonジェネレーターを優先する必要がありますか?
Pythonイテレータはメモリ効率が非常に高くなります。リストだけでなく、常にジェネレータを使用した方がよいですか?どのような場合に、単純な配列を使用すべきですか? たとえば、これの代わりに: emails = [user.email for user in users] 私はこれを好むべきですか?: emails = (user.email for user in users) 注:「イテレータ」ではなく「ジェネレータ」を意味します。

3
Haskellでのパフォーマンスについて推論するのに適したタイミングはいつですか?
サイモンペイトンジョーンズ自身は、厳密でないセマンティクスのため、Haskellでのパフォーマンスについての推論が難しいことを認識しています。 Haskellで重要なプロジェクトをまだ書いていないので、疑問に思います。プロジェクトの最初(基本的なデータ構造とIOライブラリを選択するとき)にのみパフォーマンスについて推論できますか。問題が発生したときはいつでも、プロファイラーで処理しますか? 別の言い方をすれば、パフォーマンスの問題があるときにパフォーマンスへの対処を延期することは可能ですか(つまり、それほど痛くない)、またはGHCがコードを実行する方法を予測することを学ぶ必要があります(例:厳密性アナライザーが決定するものを推測する) )?

4
物事をチェックするためにたくさんループするスレッドを作成することはパフォーマンスへの影響ですか?
これは私がいつも疑問に思っている一般的な質問です。 一般に、CPUが「while not true ...」ループなどを実行するスレッドを作成することは集中的ですか? たとえば、次のようにするとします。 // pseudo-code new Thread(function() { while (!useHasDoneSomething) { // do nothing... } alert("you did something!"); } つまり、何かが発生するのを待つスレッドで実行されるコードの一部です。 何らかの理由で、これがCPUに圧力をかけると想像します。結局のところ、それは1つの小さなループですが、サイクルが行われた瞬間にループを再実行しています。これは、1ミリ秒に何回もサイクルを繰り返すことを意味しませんか?...ナノ秒あたり!? オペレーティングシステムはプログラムとスレッドを「処理」しますよね?しかし、それでもループの実行にはかなりの注意が必要です。CPUが他に何もすることができない場合、CPUはそのループに集中し、それによってすべてのアイドル時間を消費しませんか? すべて同じループを行うスレッドを1000個作成するとどうなりますか?それはパフォーマンス/ CPUサイクルにどのように影響しますか? さらに、これはイベントが内部でどのように機能するのですか?Java、.NET、Javascriptなどのイベント(ボタンを押す、ウィンドウのサイズ変更など)を「聞いている」とき、ループするスレッドが作成されていますか?

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