問題タブ [in-memory]
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.
performance - インメモリ H2 db を使用した単体テストが非常に遅くなる
インメモリ データベースに対して多数のテストを実行しています。各テストはそのスキーマを作成します。
これまでのところ、HSQL DB に対してこれらのテストを実行していましたが、H2 の方が高速であると想定されているため、代わりに H2 に切り替えてみました。
実行時間を見ると、H2 は実際には大幅に高速です (10 ~ 50%)。しかし、多くのテストを実行すると、H2 は合間に休憩を取るようで、全体的なパフォーマンスは HSQLDB よりもはるかに悪くなります (800-900%)。
完全なテスト スイートに対して単一のテストの良好なパフォーマンスを維持する方法はありますか?
H2 で試した URL は次のとおりです。
これは、HSQL DB で使用するものです。
編集:
再現可能なテスト ケースを作成しようとしましたが、単純な jdbc のみを使用する場合は問題がないように見えるため、それほど簡単ではありません。すべてが休止状態を使用する約 500 のテストの後、テストは遅くなります。
VisualVM で気付いた唯一のことは、テストが遅くなり始めると同時に、CPU 使用率がゼロに近くなり、ノイズが発生することです。
編集2:
JStack 出力:
スキーマを作成するときに、テストが DB ロックを待っているようです。
編集3:
複数の接続に問題があるようです。jdbc:h2:mem:test (1 つのプロセスで複数の接続) を jdbc:h2:mem: (名前のないプライベート; 1 つの接続) に置き換えると、すべて問題ありません (ただし、hsql db よりも ~10% 遅くなります)。
編集4:
OK、ファイル db に対してテストを実行したところ、この方法でトレース ファイルを見つけることができました。ここでも問題は同じです。トレース ファイル
java - Java の IP アドレス フィルター用のインメモリ データ構造の最適な選択
このようなCIDR形式のファイルがあり192.168.1.0/24
、この2列の構造に変換されます
各文字列の IP アドレス変換は、次のコードで行われます。
の 500 万を超えるエントリがあると考えてください(low high : 3232236030 3232235777)
。
また、交差するため、IP は複数の範囲から発信できます。最初のものだけでOKです。
データは読み取り専用です。が属する
範囲を見つけるための最速の方法は何ですか? ipToBefiltered
構造は完全にメモリ内にあるため、データベース ルックアップはありません。
アップデート:
このPeerblockプロジェクトを見つけました(100 万回以上ダウンロードされているので、高速なアルゴリズムが必要だと思います): http://code.google.com/p/peerblock/source/browse/trunk/src/pbfilter/filter_wfp。 c
プロジェクトが範囲のリストを作成し、それらを検索するために使用している手法を知っている人はいますか?
.net - .Net を使用して、MS グラフ コントロールを使用して UI なしでグラフを生成することは可能ですか?
MS グラフ コントロールを使用してグラフを作成したいのですが、ファイルに保存できるグラフを作成するには、これをフォームに配置する必要があります。
ただし、Windows サービスからグラフを生成したいのですが、アプリケーションには UI がないため、「メモリ内」でグラフを生成し、グラフィック ファイルを生成できるようにしたいと考えています。
MS Chart コントロールを使用して達成することは可能ですか、それとも別のフリー/オープンソース コントロールがどこかにあるのでしょうか?
ノート
私のアプリケーションは、Windows サービスから呼び出されてグラフィックスを生成するコマンド ライン アプリです。
Windows サービスは、UI 環境なしで実行されています。
python - ネストされたディレクトリとファイルの tar アーカイブを Python 文字列のみから一時ファイルなしでプログラムで作成するにはどうすればよいですか?
ファイルの内容に文字列を使用して、Python から階層ディレクトリ構造を持つ tar アーカイブを作成したいと考えています。この質問を読みました。これは、文字列をディレクトリとしてではなくファイルとして追加する方法を示しています。実際にディレクトリを作成せずに、その場で tar アーカイブにディレクトリを追加するにはどうすればよいですか?
何かのようなもの:
java - javax.toolを使用したカスケードインメモリコンパイル
EclipseのJDTコンパイラーは、カスケードコンパイルを実行できるようにするINameEnvironment
メソッドを定義するインターフェースを提供します。findType(...)
不思議なことに、標準のJDKコンパイラツールキットを使用してそれを行う方法があるかどうか知りたいですか?
注:このシナリオは、相互依存関係を持つテンプレートファイルで生成されたクラスのメモリコンパイルを行うテンプレートエンジンであり、テンプレートファイルに遭遇した順序を予測できないため、Foo
親がBar
コンパイルされる前に最初にコンパイルする必要がある場合があります。カスケードコンパイルを実行するメカニズムが必要です。つまり、コンパイル中にFoo
別のソースを生成しBar
、コンパイルを続行するために最初にコンパイルする必要がありFoo
ます。次のようなコード:
.net - .netの効率的なトライの実装
.netのトライ実装を探しています。
これをメモリ内オブジェクトプールのインデックス構造として使用することを計画しています。スレッドセーフである必要はありませんが(1つのスレッドのみが更新するため)、少なくとも2,000万のアイテムを適切に、一定のパフォーマンスで処理できる必要があります。
ネットで見つけたのはサンプルコードかおもちゃのプロジェクトのようです。だから、私は本当に生産品質の実装を探しています。利用可能な場合は、商用ライブラリもOKです。
PS:私が見たハッシュテーブルの実装はメモリを使いすぎており、配列に基づいているためメモリの断片化を引き起こす傾向があるため、試行を選択しました。O(1)ルックアップ特性と多数のアイテムの良性メモリ使用特性を備えたこのようなコンテナも問題ありません。
ありがとうございました、
mongodb - シャーディングを使用したメモリ内のMongoDBインデックス
通りの言葉は、使用しているインデックスをメモリに保持できないと、MongoDBの速度が低下するということです。これはシャーディングでどのように機能しますか?シャードはそれ自体のBTreeのみをメモリに保持しますか、それともすべてのシャードはコレクション全体のインデックスをメモリに保持する必要がありますか?
load - インメモリH2データベースをディスクに保存する
完全に埋め込まれたh2インメモリデータベースをバイナリモードでファイルまたはディレクトリに保存/ロードして、ロードを高速化するにはどうすればよいですか。
これをデータのキャッシュに使用したいので、create table/insert句のすべての行を毎回実行する必要はありません。
database - 高速計算のために既存の Sqlite データベースをメモリにロードする
Perl、MATLAB、またはJavaで高速に計算するために、既存のデータベース(Sqlite 3)をメモリにロードする方法を知っている人はいますか? Perlが優先されますか?
私は集中的な計算を必要とするプロジェクトに取り組んでおり、実際のデータベースを固定したままにしたいと考えています。したがって、Sqlite3 データベース全体をメモリに読み込み、そこにあるものをメモリ内で実行したいと考えています。
インメモリ データベース接続の基本は知っていますが、Perl は既存のデータベースをロードするのではなく、この方法を使用して新しいデータベースを作成することしかできないようです (これは私が実装したいオプションです)。
java - I/O なしで BufferedImage を byte[] に変換する
こんにちは、メモリ内に BufferedImage インスタンスがあり、それを byte[] に変換して、パフォーマンスを考慮して I/O 操作なしで base64 文字列としてエンコードしたいと考えています。次の API を使用していました。
ただし、この API は引き続き暗黙的にイメージを OS 一時ディレクトリに書き込みます。これは、基盤となる OS 一時ディレクトリがいっぱいで一時ファイルを作成できない場合に失敗につながります。スタックトレース:
I/O なしで変換を行う効率的な (メモリ内変換や効率的な I/O などの) 方法はありますか? お知らせ下さい。