問題タブ [objectpool]

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.

0 投票する
1 に答える
843 参照

c# - 既存のバイト配列を使用した C# Protobuf .NET

そのため、.NET で Protobufs を使用しており、それらをバッファー プールと AsyncSocketEventArgs プールに統合しようとしています。バッファー プールは、巨大なバイト配列のセクションをイベント引数に割り当てます。

したがって、問題は、Protobufs をバッファーの 1 つに直接シリアル化する方法がわかりません。代わりに、すべてのメソッドが独自のバッファにシリアル化されているように見えるため、時間/メモリが無駄になります...私が探していることを行う方法はありますか?

編集: プロト スキームを作成し、完全にシリアル化されたクラスではないデルタを含むメッセージを生成するので、属性/シリアライザー クラスを使用しても役に立たないと思います。バイトをバッファの 1 つに直接書き込みたい。私が読んだことから、MemoryStreamはまだ作成されたバイト配列を指しているだけで、多くの時間/メモリを浪費していると思います。

0 投票する
2 に答える
587 参照

java - Objectpool と不変オブジェクト

単純なクラスで作業していて、オブジェクトの作成が重くないとします。

simple-objects を継続的にキューに入れる必要があります。

Object-Pool で作業し、Simple-Class の変更可能なクラスを変更する方が高速ですか? ないことを願っています。

0 投票する
1 に答える
175 参照

java - Java の配列とリンク リスト

4つのクラスを作成しました

  • ObjectPool.java
  • NodePool.java
  • Node.java
  • ArrayLinkedList.java

クラス NodePool はクラス ObjectPool を継承し、メソッド create() および reset() の実装を提供します。

クラス Node には、通常の二重リンク リスト メンバー (data、prev、および next) があります。クラス ArrayLinkedList は、T 要素のリストを実装します。データ要素は、基になる ArrayList 配列に格納されているノードに格納されます。

これが私のコードです:ObjectPool.Java

NodePool.Java

ArrayLinkedList.java

問題は、コードで完了していないものがほとんどないことです。どうすればよいかわかりません。私が間違っていることを親切に修正してください。

0 投票する
0 に答える
58 参照

c++ - 最新の C++ 設計からの「スモール オブジェクト アロケーター」の実装中のポインター比較の問題

メモリの割り当て解除はより問題になります。割り当て解除時に情報の一部が失われるためです。解放するためのポインターしかなく、そのポインターがどのチャンクに属しているかがわからないためです。chunks_ をウォークスルーし、指定されたポインターが pData_ と pData_ + blockSize_ * numBlocks_ の間にあるかどうかを確認できます。

Modern C++ design 2001 から、76 ページ

私の理解が正しければ、特定のポインターが特定の配列内の要素を指しているかどうかをチェックするために説明されているアルゴリズムには、異なる配列からの 2 つのポインターの比較が含まれます。比較演算子が >= または <= (非常に可能性が高いですか?) の場合、未定義の動作が発生します。

しかし、作成者はこのプロシージャまたは演算子を明示的に指定していないため、この問題は読者に任せます。(または、作者が間違いを犯しましたか? 彼は少なくともヒントを与えることができます。)

解決策の 1 つは、!= を使用することです。これにより、解放が 100 倍遅くなります。または、特定の状況下では、特定の未定義の動作が許容される場合があります。では、どのような状況下で、上記の未定義の動作を喜んで許容できるのでしょうか?