Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 3255|Jawab: 2

[Sumber] .NET/C# Performa tinggi menggabungkan beberapa file menjadi satu file

[Salin tautan]
Dipaparkan pada 2024-2-14 12:04:26 | | | |
Persyaratan: Saat menggunakan file besar untuk diunggah dalam potongan, backend perlu menggabungkan blok yang berbeda menjadi satu file secara berurutan, atau saat memotong file arsip, gabungkan file yang dipotong ke dalam file sumber.

Linux menggunakan pemisahan pemotongan file terpisah
https://www.itsvse.com/thread-10716-1-1.html

Pertama, siapkan dua file 100M untuk pengujian, dengan perintah berikut:

Windows membuat file dengan ukuran yang ditentukan
https://www.itsvse.com/thread-10732-1-1.html

Kodenya adalah sebagai berikut:


Dua skenario penggabungan yang berbeda diuji. Seperti yang ditunjukkan di bawah ini:



Mulai pengujian dengan debug VS 2022 -> Profiler -> centang ".NET Object Allocation Trace":



Ukuran total gabungan1 adalah: 16.778.034, ukuran total gabungan2 adalah: 164.270,Total alokasi menunjukkan bahwa merge1 102 kali lebih besar dari merge2, dan semakin besar, semakin buruk kinerjanya

Gunakan PerfView untuk melihat analisis Tumpukan CPU dan Tumpukan Mem Bersih GC Heap Secara terpisah, seperti yang ditunjukkan pada gambar berikut:



Pernyataan:Inc% - Biaya inklusif dinyatakan sebagai persentase dari total biaya untuk semua sampel(100% untuk node ROOT). Itu bisa diurutkan olehnya.





Mantan:Windows membuat file dengan ukuran yang ditentukan
Depan:Pengantar dan perbedaan antara kompilasi JIT dan AOT di .NET
 Tuan tanah| Dipaparkan pada 2024-2-14 12:09:30 |
Uji dengan VS 2022 Debug -> Performance Profiler -> centang "Penggunaan Memori":

  • merge1 memakan 808MB saat dieksekusi
  • merge2 memakan 12MB saat dieksekusi




Jika metode merge2 dijalankan sendiri, program dimulai 6MB dan selalu memakan 6MB selama eksekusi fungsi dan setelah selesai.
 Tuan tanah| Dipaparkan pada 2025-1-1 10:20:06 |
Optimalkan gaya penulisan

Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com