問題タブ [memory-efficient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - javascriptでよりメモリ効率の良いIIFEは何ですか?
dom is readyの場合にのみ、よりメモリ効率の高い手法を使用して、匿名の自己実行関数を呼び出したいと考えています。また、最適化のために、window および window.jQuery グローバル オブジェクトのローカル スコープ バージョンを使用したいと考えています (ローカル スコープのロードは、グローバルよりも高速です)。
で、このパターンで合ってる?
何か間違ったことをしているのかどうかわかりません...
前もって感謝します!
java - マルチタブ マップ/タイル レベル エディター (多数の HashMaps/ArrayLists) での CPU/メモリ効率
私は 2008 年以降のマシンで開発を行っていますが、残念ながら現時点ではアップグレードできません。私が構築しているこのツールのパフォーマンスを最適化する必要があります。
私のプロジェクト全体はかなり大きく、現在、後でメイン プロジェクトのマップを作成するために使用する独自のマップ エディタを作成しています。これはかなり単純で、マップが所有する「タイル」の配列をロード、保存、および編集するように設計されています。基本的には、私のニーズに合わせてカスタマイズされた 2D マップ エディターです。
マップがエディターに読み込まれると、そのタイルセット (1 つの大きな BufferedImage) が個々のタイル (小さな BufferedImage を含む) に分割され、GUI の右側にアイコン付きの JLabels の大きな束に読み込まれます。さまざまな Swing LayoutManager を使用して、目的の配置を実現しました。
MapCanvas 領域内では、基本的に同じことが行われます。空かどうかに関係なく、各タイルにはアイコン付きの JLabel があり、グリッドにロードされます。Java2D を使用して設計および描画するよりも Swing コンポーネントを使用する方が効率的かどうかについて以前に尋ねたことがありますが、それはあまり問題ではないという意見で一致しました (正直に言うと、Swing はおそらく私が作成するものよりも優れているでしょう)。自分)。
私の問題は、各 JLabel とそのアイコンを相互接続する方法に起因していると思います。
私の目標は、作成しなければならない重複するアイコンの数を減らすことでした。これにより、理論的にはメモリ使用量と CPU 使用量が削減されるはずです。エディター内のタイルは次のように操作されます。
- 「スタンプ」するタイルが選択されていない場合は、JLabel のアイコンの上に塗りつぶされた色のアルファ合成があり、それがホバーされていることを示し、MouseExit に戻ります。
- アクティブなスタンプ ツールにタイルがある場合、そのタイルの画像が JLabel のアイコンを一時的に置き換えて、ホバーされていることを示し、MouseExit で元に戻ります。
- アクティブなスタンプ ツールにタイルがあり、JLabel をクリックすると、元に戻さない限り、その JLabel のアイコンがアクティブなスタンプ タイルに「永続的に」設定されます。
- グリッド線を表示するオプションがオンになっている場合、各 JLabel のアイコンは ImageFactory を介して処理され、上端と左端に沿って破線が実行されます (図に示すようにグリッドを形成します)。 JLabel の preferredSize は収容するように設定されており、ImageFactory でアイコンのサイズを変更する必要があります (グリッド線は状況に応じて適用されます)。
Map をエディタにロードすると、対応する BufferedImage (空かどうかに関係なく) を指定して、各 JLabel が作成され、Map のフィールド ArrayList にスローされます。レイアウトが正しく見えるように preferredSize が設定され、MapCanvas (単なる JPanel) に追加されます。
JLabel を Key として渡し、BufferedImage を取得できるように、さまざまな ArrayList オブジェクトと HashMap オブジェクトを作成しました。そうすれば、JLabel の上にカーソルを置くと、MouseEvent はイベントのソースをリスナーに送り返すことができ、受信した JLabel に基づいて正しい BufferedImage を取得できます。画像は、上記のいずれかの方法で ImageFactory クラスによって処理できます。
したがって、基本的に JLabel が MouseEvent を受け取ると、次のようになります。
- MouseEvent がソース JLabel を ActionListener に送信する
- リスナーは、ソース JLabel をキーとして使用して、目的の BufferedImage チャンクを取得します
- BufferedImage チャンクは、それに応じて処理されます (これは、カラー アルファ コンポジット、それに適用されるズーム係数、追加されるグリッド線、またはこれらの組み合わせである可能性があります)。
これを行うより良い方法はありますか?これは私の 2 年前のラップトップでは目立った負担にはなりませんが、古いデスクトップ マシンでマウスが JLabel と対話するときに非常に顕著な遅延が発生します。
どちらも積極的に開発しているので、環境をスムーズに動かしたいし、それがメモリとCPUの使用率を厳しくしなければならないということなら、それでいいのです。
しかし、メモリ効率の良いシステムを思いつくことはできないようです。
ArrayLists と HashMaps が問題ですか? 多くの画像操作が問題ですか?
私はすでにさまざまな方法で JLabel の「setName(String)」メソッドを利用しています (たとえば、各 JLabel には、JLabels の 1 次元配列内の位置と、グラフ上の x 座標と y 座標を含む名前があります)。 、つまり "maptile#24:1,9") ですが、それには配列を反復処理する必要があり、キーを使用して BufferedImages を具体的に取得する方が効率的であることを願っていました。
vb.net - If ステートメントのメモリ効率
最近、自分のプログラムがどれだけのシステム メモリを使用するかについて考えています。私は現在、大学で A レベルのコンピューティングを行っており、ほとんどのプログラムで違いが無視できることはわかっていますが、どの言語でも、次のことが実際に違いを生むかどうか疑問に思っています。
条件が true かどうかに応じて、「True」または「False」を出力したいとします。個人的には、次のようなことをするのが好きです。
ただし、次の場合はメモリの消費量が少なくなるなどの疑問があります。
明らかに、これは非常に単純化された例であり、ほとんどの場合、出力されるものははるかに多くあります。また、ほとんどの商用プログラムでは、この種のステートメントはまれであることを認識していますが、原則を理解していただければ幸いです。
ここでは VB.NET に焦点を当てていますが、これはコースで使用される言語であるためですが、実際には、これがさまざまなプログラミング言語でどのように異なるかを知りたいと思っています。
c++ - OpenCV - 行列の乗算結果を別の行列のサブセットに直接コピーする
行列の乗算結果を別の行列のサブセットに直接コピーしようとしています:
たとえば、結果を行列 c に直接コピーすることは可能ですか (これが機能しないことはわかっています)。
より効率的ではないでしょうか?
java - この文字列配列に文字列を追加する最も効率的な方法は何ですか?
myStrings という文字列 [] があります。他のものに変換することはできません。文字列配列のままにしておく必要があります。ただし、文字列をもう 1 つ追加する必要があるため、このメソッドを記述しました。これを行うには、より優れた、より高速で、メモリの消費量が少ない方法があると確信していますが、それがわかりません。これを解決する唯一の方法をJava APIで提供できる人はいますか? 私はJava 1.7を使用しています
python - Python イテレータの最初と最後の要素を取得する最速の方法
インテレータの最初と最後の要素をチェックしようとしています。数千のエントリがあるため、迅速な確認方法が必要です。この投稿が見つかった場合、それは私をこの戦略に導きました。
これを達成するためのより迅速な方法について意見はありますか? どうもありがとう!
c# - ループの内側と外側でオブジェクトを作成する場合のメモリの違いは何ですか?
自分の知識のいくつかのギャップを解消したい。これから。
例 (c#):
ここでは、スペースを節約するために、同じループで 2 つの Person オブジェクトを使用しています。
友人をインスタンス化するたびに、メモリ内の同じ場所を再利用し、存在する場合は既存の Person オブジェクトを上書きすることを理解しています。
一方、新しい「男」オブジェクトにはそれぞれ、新しいメモリの場所が割り当てられます。
これが正しい場合、これが間違っている場合は修正してください。これは、「guy」よりも「friend」を使用する方がメモリ効率が高いことを意味します。
「男」の方がいいというケースはありますか?コンストラクタの実装に依存する可能性はありますか?