この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3255|答える: 2

[出典] .NET/C# 高性能は複数のファイルを1つのファイルに統合します

[リンクをコピー]
2024年2月14日 12:04:26に投稿 | | | |
要件:大きなファイルをチャンクでアップロードする場合、バックエンドは異なるブロックを順番に1つのファイルにマージするか、アーカイブファイルをカットする際にはカットファイルをソースファイルにマージする必要があります。

Linuxは分割ファイル切断分割を使います
https://www.itsvse.com/thread-10716-1-1.html

まず、次のコマンドで2つの1億Mファイルを準備してテストします。

Windowsは指定されたサイズのファイルを作成します
https://www.itsvse.com/thread-10732-1-1.html

コードは以下の通りです:


2つの異なるマージシナリオがテストされました。 以下に示すように:



VS 2022 デバッグ -> Profiler -> 「.NET Object Allocation Trace」をチェックしてテストを始めてください:



merge1の総サイズは16,778,034、merge2の総サイズは164,270、総割り当てはmerge1がmerge2の102倍の大きさを示しており、大きいほどパフォーマンスは悪化します

PerfViewを使って、CPUスタックとGCヒープネットメモリスタックの解析を別々に表示できます。以下の図に示されています:



所見:Inc% - 包含費用は、すべてのサンプルの総費用の割合で表されます(100%ROOTノードの場合です)。 それで分類できます。





先の:Windowsは指定されたサイズのファイルを作成します
次に:.NETにおけるJITとAOTコンパイルの紹介と違い
 地主| 2024年2月14日 12:09:30に投稿 |
VS 2022 Debugでテスト -> パフォーマンスプロファイラー -「メモリ使用」チェック>:

  • merge1は実行時に808MBを占めます
  • merge2は実行時に12MBを占めます




merge2メソッドを単独で実行すると、プログラムは6MBの起動時間を持ち、関数実行中および完了後は常に6MBを占めます。
 地主| 2025年1月1日 10:20:06に投稿 |
文章スタイルを最適化しましょう

免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com