이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3255|회답: 2

[출처] .NET/C# 고성능 기능은 여러 파일을 하나의 파일로 병합합니다

[링크 복사]
2024-2-14 12:04:26에 게시됨 | | | |
요구사항: 큰 파일을 청크로 업로드할 때, 백엔드는 서로 다른 블록을 순서대로 하나의 파일로 병합해야 하며, 아카이브 파일을 절단할 때는 절단된 파일을 원본 파일로 병합해야 합니다.

리눅스는 분할 파일 절단 방식을 사용합니다
https://www.itsvse.com/thread-10716-1-1.html

먼저, 다음 명령어로 테스트할 100M 파일 두 개를 준비하세요:

Windows는 지정된 크기의 파일을 생성합니다
https://www.itsvse.com/thread-10732-1-1.html

코드는 다음과 같습니다:


두 가지 다른 합병 시나리오가 테스트되었습니다. 아래에 나와 있습니다:



VS 2022 디버그 -> 프로파일러 -> ".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 디버그 -> 성능 프로파일러 -> 체크 "메모리 사용량"으로 테스트하세요:

  • merge1은 실행 시 808MB를 차지합니다
  • merge2는 실행 시 12MB를 차지합니다




merge2 메서드를 단독으로 실행하면 프로그램은 6MB에서 시작되며, 함수 실행 중과 완료 후 항상 6MB를 차지합니다.
 집주인| 2025-1-1 10:20:06에 게시됨 |
글쓰기 스타일을 최적화하세요

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com