問題タブ [memory-mapped-files]
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.
c# - メモリ マップト ファイルを動的に拡張する方法
次の要件を解決するために C# を使用しました。 - 大量のデータを高速に受信できるアプリを作成する - 受信したデータをさらに受信しながら分析できる必要があります。- CPU とディスクの使用を最小限に抑える
アルゴリズムの私のアイデアは..
-> 以前の「部屋/スペース」を使用すると、ディスクのサイズが 10MB 単位で増加します。
「mmf.sizeをSIZEで増やす」はC#でどのように行われますか? mmfs とビューの作成に関する多くの簡単な例を見つけましたが、実際に mmfs 領域を増やすコードを見た唯一の場所 (リンク) は、コンパイルできないコードを使用しています。どんな助けでも大いに感謝します。
編集これにより例外が発生します:
この例外がスローされます: 別のプロセスで使用されているため、プロセスはファイル 'C:\Users\moberg\Documents\data.bin' にアクセスできません。
ios - メモリマップトファイルと低メモリシナリオ
iOSプラットフォームは、メモリ不足のシナリオでメモリマップトファイルをどのように処理しますか?低メモリシナリオとは、OSUIApplicationDidReceiveMemoryWarningNotification
がアプリケーション内のすべてのオブザーバーに通知を送信するときを意味します。
私たちのファイルは、を使用してメモリにマッピングされます+[NSData dataWithContentsOfMappedFile:]
。
マップされたファイルは、仮想メモリ技術を使用して、実際に必要になるまでファイルのページをメモリにコピーしないようにします。
これは、ページが使用されなくなったときにOSがページのマップを解除することを意味しますか?ページを使用されなくなったものとしてマークすることは可能ですか?シナリオが変更された場合、このデータは読み取り専用です。mmap()
直接使用する場合はどうでしょうか。これは望ましいですか?
c++ - boost::interprocess message_queue のパフォーマンス - やや遅い?
Windows プラットフォームで、送信側と受信側の両方が C++ で記述されている超高速 MQ メカニズムが必要です。
IPC にRCF-C++を使用した現在の実装では、Windows 名前付きパイプを介して約 20,000 メッセージ/秒でクロックを処理しています。
私はデモアプリに従ってboost::interprocess Message Queuesのパフォーマンスをテストしており、約48,000メッセージ/秒を測定していますが、これは驚くほど遅いです。このブログ投稿のコードを使用した C# )、約 150,000 メッセージ/秒を取得しました。
ブースト message_queue のパフォーマンスが非常に遅い理由と、それを改善するために何ができるかについてのアイデアはありますか?
windows - Windows: 共有メモリのサイズを変更する
Windows で共有メモリ セグメントを作成する場合 (などCreateFileMapping(INVALID_HANDLE_VALUE, ...)
)、より大きなセグメントを作成してデータをコピーする以外に、サイズを変更する方法はありますか?
ファイル マッピングのサイズは固定されていることを MSDN で読みましたが、同じメモリ上で新しいマッピングを作成する方法はありますか? Linux のように、何度も何度も使用shm_open()
できftruncate()
ますmmap()
。
linux - mmapを使用したEmacsバッファ割り当て
mmap
cygwin、freebsd、irix6-5でバッファ割り当てがデフォルトでアクティブになっているのに、Linuxではアクティブになっていないのはなぜですか?
を参照USE_MMAP_FOR_BUFFERS
してくださいemacs/src/config.h
。とuse_mmap_for_buffers
でemacs/configure.in
。
mmap
ベースアクセスは通常のバッファ割り当てよりも優れていませんか?
c# - ファイルをチャンクでロードするための指示を要求する(アドバイスのみが必要)
私はここ数日、xnaゲームの1億4400万のタイル表現を保存時に非常に小さいサイズに圧縮する方法に取り組んできました。なんとかそれをやってのけることができたので、私は今、それらをファイルからチャンクで取り戻す方法に困惑していることに気づきました。
私が持っているファイルに。
- 整数(7BitEncodedIntメソッドを使用してバイトに圧縮されます)
- バイト
圧縮された整数はタイルの数を表し、後続のバイトによってタイルのタイプが決まります。これはすべてうまく機能し、本当にうまく機能します。最も重要なことは、ファイルサイズを平均でわずか50MBに縮小することです。
問題は、現在ファイル全体を読み戻していることです。ファイルから私はこれを取得しています。
- 各タイルのインデックス値(タイルを取得するときの基本的な反復)
- バイト値としての各タイルのタイプ
- そのタイルのテクスチャを表すバイト値(これを説明するのは難しいですが、タイルごとに必要です)
このすべての最終結果は、私がファイルを保存することに成功し、約50MBしか使用しないことです。しかし、すべてをロードして戻すと、RAM上で約1.5ギガに拡張されます。もうタイル情報を犠牲にする余裕はありません。そのため、プレーヤーの場所に基づいてマップの一部のみをロードする方法が必要です。目標は、100〜200mbの範囲にあることです
私は、クワッドツリーを使用してファイルをメモリマッピングすることを検討してきました。これは、ファイルをチャンクでロードするために見つけることができるほとんどすべてのものです。これらのオプションはすべてかなり良いように見えますが、どれが最適かはわかりません。状況を考えると、さらに良いオプションがあるかもしれません。これらすべてのもう1つの問題は、これらのソリューションがすべて非常に複雑に見えることです(特に、これが初めて使用するため)。長いコーディングに専念することに反対しているわけではありませんが、それが私が行うことを実行することを知りたいです。事前にそれが必要です。
私の質問は、ファイルをプルするときにファイルをどのように処理する必要があるか、そしてプレーヤーの場所に基づいてファイルを処理する必要があるという事実を考えると、これを行うための最良の方法は何でしょうか?ここで方向性を探しています。コードはいつでも歓迎しますが、必須ではありません。
file-io - MMF の使用中にファイルの読み取り許可を取得する
私は2つのプロセスを持っています。1 つは .NET 4 MemoryMappedFiles を使用してメモリ マップされたファイルに書き込み、もう 1 つは .NET 3.5 (MONO) の FileStream を使用してファイルを読み取ります。許可を得ると、すべてが正常に機能し、ファイルの読み取りまたは書き込みに問題はありません。問題は、許可を取得することです。
MMF の書き込み (ライター):
MMF の読み取り (リーダー):
最初に Writer を起動し、次に Reader を起動します。
この素朴なアプローチを使用してテストしました:
通常、約 10 秒後にリーダーは許可を取得し、すべてがスムーズに実行されます。例外をキャッチすると、次のようにスローされます。
IOException: System.IO.FileStream..ctor のパス C:\path での共有違反 (System.String パス、FileMode モード、FileAccess アクセス、FileShare 共有、Int32 bufferSize、Boolean anonymous、FileOptions オプション) [0x00000] in :0
これらの 2 つのプロセスが最初からファイルを適切に共有しない理由は何ですか?
c# - MemoryMappedFile のファイルを削除できません
次のコードは、この例外をスローします。
「別のプロセスで使用されているため、プロセスはファイル '\filename' にアクセスできません。」
十分ですが、ファイルを削除できるようにリーダーや mmf を閉じる適切な方法は何ですか? MemoryMappedFile には close() メソッドなどがあると思いますが、そうではありません。
どんな助けでも大歓迎です。ありがとう。
編集:
私がこの問題を抱えているのはデストラクタだけのようです。dispose() が他の場所で呼び出されると正常に動作しますが、次のようにすると例外がスローされます。Reader と mmf は明らかにクラスのメンバーです。コンストラクターに入ると、ファイルアクセスに暗黙的な何かが起こっていますか?
java - メモリ マップド スワップ ファイル内のメモリの移動
MappedByteBuffer を使用してファイルをメモリ マップすることにより、さまざまなサイズのビットマップのスワップ ファイルを設定しようとしています。このファイル内でメモリを移動できるようにしたいので、おそらく2つのサブ質問があります。
- ByteBuffer にメモリのチャンクを別のインデックスに移動するように指示する方法はありますか、または
- 生のマップされたメモリに直接アクセスして、自分で移動することは可能ですか?
c++ - メモリマップトファイルのバイトを交換する効率的な方法
データのブロックをメモリに読み込み、以下に示す関数を使用してビッグエンディアンの整数を交換することで、大きなバイナリファイル(〜8Gb)を解析することができました。ただし、 Boost Memory-Mappedファイルを使用してパフォーマンスを向上させようとしていますが、ファイルが読み取り専用モードで開かれているため、endian_swap関数を使用できません。元のファイルを書き込まずにバイトを交換する効率的な方法はありますか?そうでない場合、パフォーマンスはI / Oオーバーヘッドの影響を受けますか?
コードはこの記事で見つかりました。お時間をいただき、誠にありがとうございます。