問題タブ [file-mapping]

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 に答える
845 参照

winapi - ファイルマップされたページをデコミットするにはどうすればよいですか?

メモリ マップ ファイルと、現在コミットされているビューのページがあります。デコミットしたいと思います。MapViewOfFile は、ファイル マップされたページでは VirtualFree を使用できないことを示しています。それを行う他の方法はありますか?

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

winapi - ファイル マッピングと同等になるように一般的な I/O を改善する方法

ファイル マッピングは優れていますが、32 ビット システムの比較的大きなファイルの場合は、それを忘れて、すべてを一般的なファイル I/O で実装する必要があります。大規模なランダム読み取りと書き込みの場合、システム キャッシュはファイル マッピングとほぼ同じように機能します。しかし、小さなファイル領域に関する小さな操作の場合、違いは非常に大きく、ファイル I/O は、ファイル マッピング ファイルの同等の操作よりも 10 倍遅くなります。後者は主に、いくつかの小さなアクションであっても、SetFilePointer、ReadFile、WriteFile の複数の呼び出しが原因です。

したがって、小さな読み取り/書き込みでは効果的に機能する何らかのキャッシュ (または何らかのトリック) を実装または使用したいと思いますが、大規模な操作では Windows が素晴らしい仕事をしているので、複雑なものは必要ありません。これに対する既知のアプローチはありますか?

ありがとう

マックス

0 投票する
3 に答える
26688 参照

data-structures - レッドブラックツリー対Bツリー

メガバイトからテラバイトまでの範囲のデータに対して高速な検索、挿入、および削除操作を実行する必要があるプロジェクトがあります。私は最近のデータ構造を研究し、分析していました。具体的には、3 つのケースを紹介し、それについて質問したいと思います。

  1. データは、メモリが一度に処理できる量 (サンプル範囲は 10 ~ 15 テラバイト) をはるかに超えています。この場合、データ構造をディスクに保存します。

  2. データはシステムのメモリに比べて比較的少ないため、速度のためにメモリ自体に保存および操作できます。

  3. データは空きメモリを超えており、ページング ファイル内の可能な連続したデータ チャンクのサイズよりも小さいと想定します。したがって、データ構造をディスク上のファイルに保存し、ファイルのメモリ マッピングを行います。

私が導き出した結論は次のとおりです。

ケース 1 の場合、ディスクのローテーションによって生じる遅延を節約できるため、アクセスを高速化するために B ツリーを使用する必要があります。

ケース 2 では、データがメモリ上にあり、ないため、アクセスを高速化するために Red Black Tree を使用する必要があります。最悪の場合、スキャンする必要がある要素の数は、B ツリーを使用する場合に必要な要素よりも少なくなります。

ケース 3 については、これには疑問があります。ページ ファイルはディスク上にあり、ネイティブ OS I/O を使用してファイルを操作します。したがって、B ツリーの方が適切なオプションでしょうか、それともレッド ブラック ツリーでしょうか?

上記の 3 つの結論のどこが正しく、どこが間違っているか、また 3 つの別々のケースでどのようにパフォーマンスを改善できるかを知りたいです。

私は C++ 言語を使用しています。赤い黒いツリーと B ツリーがあり、どちらもゼロから設計したものです。ファイル マッピングに Boost ライブラリを使用しています。

更新 1:: stackoverflow でこの投稿を読んでいました。本当に良い洞察を得たので、私がケースで行ったタイプの比較は間違っているかもしれないと感じています. 最も投票数の多い回答にリンクが投稿されましたhttp://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/speedtest.html

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

c# - UnknownError_Num 8: MemoryMappedFile

次のコードを使用して MemoryMappedFile を使用すると問題が発生します。

このコードを使用すると、エラー UnknownError_Num 8 が発生します。NoOfChannels をより小さな値に制限すると、エラーは発生しません。私のシステムには 32GB があるので、この量のデータを割り当てるのに問題はないはずです。

誰もがそのような行動を経験したことがありますか?

ありがとうマーティン

0 投票する
4 に答える
1751 参照

java - Java で同時実行を使用してディスク上に Key-Value ストアを作成する

一連のファイルを読み取り、それをキーと値のペアに分割し、これらをディスク上のそのキーの (キー、値のリスト) として保存する必要があります。これは、map-reduce パラダイムとよく似ています。ただし、すべてが1台のコンピューターにあります。たとえば、さまざまなファイルにさまざまなリストを書き、キーでファイルに名前を付けることができます。それは物事を行う非常に貧弱な方法のようです。まず、キーが 10 億個あれば、最終的には 10 億個のファイルになります。したがって、明らかにそれはうまくいきません。何らかのメモリ マッピングが必要になります。また、マップ ジョブを実行する別のスレッドを用意する必要があるため、同じバッファに書き込む場合は、それらの間である種の同期が必要になります。キーと値のバッファマッピングがあり、バッファを同期している場合、スレッドはお互いのつま先を踏んではならないので、その部分はうまくいくはずです。問題は、値をディスクにマッピングする方法です。同じファイル内の異なるキーに対応するバッファを書き込むにはどうすればよいですか? 誰かが私を正しい方向に向けることができれば、それは大歓迎です。この分野に関する私の知識は非常に哀れです。再度、感謝します。

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

excel - Excel 2007 で異なるワークシート名を表す文字列のドロップダウン リストを追加するにはどうすればよいですか?

私は最近、自分の仕事のレポート プロジェクトに配置されました。私の全体的な目的は、データを日付別およびグループ別にフィルタリングできる 9 つの異なるグラフのレポートを作成することです。22 の異なるグループがあり、個々の月、週、および日ごとにレポートを表示するには、ドリルダウンする必要があります。これはすべて Excel 2007 で行う必要があります。今のところ、月ごとの結果と、すべての異なるアプリケーション グループとすべてのグループの概要を表示することに取り組んでいます。

私がこれを設定した方法は、2 つのワークシートを含む 1 つのワークブックを作成し、1 つのワークブックに 9 つのグラフすべてを含むようにすることです。これを Dashboard_All と呼びましょう。これらのグラフは、各グラフのすべての情報を含む 2 番目のシートにリンクされています。これを Chart_Data と呼びましょう。

このチャート データはどこから来ているのでしょうか。Chart_Data は、生データ、ピボット テーブル、およびマトリックス テーブルを含む別のワークブックのいくつかのテーブルを参照します。ここの 1 つのワークシートには、1 つのテーブルにすべての生データが含まれるように設定しました。1 つのワークシートにはすべてのピボット テーブル (グラフごとに 1 つのピボット テーブル) が含まれており、生データをふるいにかけ、結果を得ることができます。これらの結果を含む 23 の異なるワークシートを作成しました。各グループに 1 つ (これを行うために各ピボット テーブルでグループ フィルターを使用しました)、すべてのグループに 1 つのサマリーです。また、ピボット テーブルの結果ごとにマトリックス テーブルを作成した 23 の異なるワークシートも作成しました。これらのテーブルが使用されるのは、別のグループのピボット テーブルを変更するたびに結果が変わり、読み取るデータがない場合は列または行が省略されることがあるためです。そこで、ピボット テーブルに空白の値がある場合に基本的にスペーサーとして機能するセルを持たせるために、ピボット テーブルを参照するテーブルを作成しました。これらのグラフには、さまざまな月のすべての可能な組み合わせが行とさまざまな列として含まれています。前のワークブックの Chart_data は、これらのマトリックス テーブルを参照します。

VLOOKUPドロップダウン リストにリンクされている Chart_Dataの関数を使用しました。たとえば、月を選択してください: ドロップダウン 1 月 2 月 3 月 ... すべての月。Vlookup は、月を選択すると、その月のみのチャートのさまざまなデータのみを表示することを認識しています。これで、毎月の目標は達成されました。次に、アプリケーション グループについて、ワークブック内のさまざまなマトリックス テーブル ワークシートを参照する別のドロップ ダウン ボックスが必要です。ドロップダウンからグループを選択すると、VLOOKUP は適切な情報を含むそれぞれのシートに移動することを認識します。

問題は、どうすれば別のシートを認識させることができるかということです。例えば、

ドロップダウン選択で「グループ 1」が変化するようにするにはどうすればよいですか?

これが長くて混乱を招くことは知っていますが、これを他にどのように説明すればよいかわかりません。どうもありがとう。

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

c++ - Windows で共有メモリ プールを作成する方法

他のすべてのプロセスがデータを共有するための共有メモリ プールを作成したいのですが、CreateFileMapping API ドキュメントについて読んだ後、共有メモリのサイズを指定する必要があることに戸惑いました。私は実際には、サービスのように見える動的な割り当てと解放を望んでいます。createFileMapping を使用して共有メモリを動的にする方法はありますか?

0 投票する
3 に答える
21790 参照

c++ - MapViewOfFileを使用した大きなファイルのマッピング

私は非常に大きなファイルを持っているので、それを小さな断片に読んでから、各断片を処理する必要があります。MapViewOfFile関数を使用してメモリ内のピースをマップしていますが、最初の部分を読み取った後、2番目の部分を読み取ることができません。マップしようとするとスローされます。

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

c++ - OpenFileMappingの問題、ファイルマップが見つかりません

現在、ファイルマップを使用してプロセス間通信をテストしようとしています。私がプロデューサーと呼ぶ最初のプログラムは、次のようにファイルマップを作成して書き込む次のコードでエラーが発生しません。

ただし、2番目のプロセスを模倣している2番目のプログラムでは、次のコードを使用して、このファイルマップを再度開こうとすると、コンシューマーにエラーが発生します。

それが私の頭の上をまっすぐに進んでいるので、誰かが私が欠けている明らかなものを見ることができますか?

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

c++ - runasを使用して異なるユーザーアカウントで実行すると、CreateFileMappingでアクセスが拒否されました

このコードは、以前に作成されたファイルマッピングを開こうとしたときに、アクセス拒否エラーを表示します。ヘルプ、ヘルプ、ヘルプ。

  • OS:WinXP SP3、高速ユーザー切り替えなし。
  • 次のコードは、runasを使用して2つの異なるユーザーアカウントで実行されます。
  • 両方のユーザーに管理者権限があります。

テストコード: