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

보기: 33025|회답: 2

[통신] .NET/C#은 BenchmarkDotNet을 사용하여 코드 성능을 테스트합니다

[링크 복사]
게시됨 2021. 3. 3. 오후 3:51:12 | | | |
요구사항: 개발 과정에서 동일한 두 기능 메서드가 요구사항을 충족할 수 있지만, 성능 문제로 호출 시 최적의 성능 방법을 선택합니다. 코드 성능을 어떻게 테스트할까요?

성능 벤치마킹은 프로그래머가 두 코드 스니펫이나 메서드의 성능을 비교하는 데 도움을 주며, 이는 코드 재작성이나 리팩토링에 좋은 정량화 기준이 될 수 있습니다. 성능 벤치마크가 없으면, 방법 A를 방법 B로 바꿀 때 육안으로 성능 차이를 어떻게 알 수 있을지 상상하기 어렵습니다.

BenchmarkDotNet은 공식 웹사이트에 있는 강력한 .Net 성능 벤치마크 라이브러리입니다하이퍼링크 로그인이 보입니다.

먼저, 새로운 .NET Core 3.1 콘솔 프로젝트를 만들 것입니다. 프로젝트 이름은 BenchmarkTest입니다

nuget 명령어를 사용해 BenchmarkDotNet을 설치하세요. 코드는 다음과 같습니다:


프로젝트를 더블 클릭하면 프로젝트의 목표 플랫폼을 다음과 같이 수정하세요:


저희는 각각 .NET Framework 4.7.2와 .NET Core 3.1 프레임워크 하에서 TestMD5와 TestSHA1 메서드의 성능을 테스트합니다.

코드는 다음과 같습니다:


다음 오류가 발생하여 실행을 시도하세요:

벤치마크 검증:
벤치마크를 정의하는 어셈블리 벤치마크테스트는 최적화되지 않았습니다
벤치마크는 최적화가 활성화된 상태(아마도 DEBUG 구성)로 만들어졌습니다. 제발, RELEASE 내에서 빌드해 주세요.
벤치마크를 디버깅하고 싶으시다면, 다음을 참고해 주세요.하이퍼링크 로그인이 보입니다.

프로젝트를 RELEASE 모드로 전환하세요아래와 같이 프로젝트를 다시 시작하는 방법:


* 요약 *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/November2018Update/19H2)
인텔 코어 i5-8259U CPU 2.30GHz (커피 레이크), 1개의 CPU, 8개의 논리 코어와 4개의 물리 코어
.NET Core SDK=5.0.103
  [호스트] : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT
  .NET 4.7.2 : .NET Framework 4.8 (4.8.4300.0), x64 RyuJIT
  .NET Core 3.1 : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT


|   방법 |           직업 |       런타임 |     미운 |     오류 |    StdDev |      민 |      맥스 |   중앙값 |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 미국 | 0.0804 미국 | 0.1045 미국 | 3.958 미국 | 4.318 미국 | 4.123 미국 |
| TestSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 미국 | 0.0793 미국 | 0.1085 미국 | 3.926 미국 | 4.289 미국 | 4.003 미국 |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 미국 | 0.0122 미국 | 0.0114 미국 | 1.202 미국 | 1.238 미국 | 1.214 미국 |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 미국 | 0.0186 미국 | 0.0165 미국 | 1.284 미국 | 1.336 미국 | 1.307 미국 |

* 힌트 *
아웃라이어
  TestContext.TestSHA1: .NET 4.7.2 -> 1개의 이상치가 제거되었습니다 (5.52 미국)
  TestContext.TestSHA1: .NET Core 3.1 -> 1개의 이상치가 제거되었습니다 (1.37 미국)

* 전설들 *
  평균 : 모든 측정값의 산술 평균
  오차 : 99.9% 신뢰구간의 절반
  StdDev : 모든 측정값의 표준편차
  최소 : 최소
  최대 : 최대
  중앙값 : 모든 측정값의 상위 절반을 구분하는 값(50백분위수)
  1 미국 : 1 마이크로초 (0.000001초)

***** 벤치마크러너: 엔드 *****
** 남은 벤치마크는 0개였습니다 **
실행 시간: 00:01:14 (74초), 실행 벤치마크: 4

전 세계 총 시간: 00:01:20 (80.63초), 실행 벤치마크: 4
* 유물 정리 *
실행되면 테스트 결과는 csv, html, md 등 다양한 형식으로 프로젝트 \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results 폴더에 저장됩니다.



메모:SimpleJob 대상 프레임 선택이 잘못되어 제대로 실행되지 않을 수 있습니다다음과 같습니다:

병렬 빌드에 실패, 순차 빌드로 전환


리소스:하이퍼링크 로그인이 보입니다.




이전의:"이 권한 키가 취소되었습니다" 오류 해결책을 비욘 수 있습니다
다음:C# 웹서비스 서버에 대한 Java 호출은 HTTP 헤더 SOAPAction의 값을 인식하지 못합니다
 집주인| 게시됨 2022. 3. 31. 오후 3:56:47 |
1. 평균 번역: 평균은 보통 산술 평균이나 기하평균을 의미합니다.

내러티브: 시퀀스 집합의 모든 값을 합산하고 총 수, 즉 평균으로 나누는 것입니다.

2. 중앙값 번역: 중간값.

내러티브: 순서가 오름차순으로 시퀀스 집합을 배열한 후 중간 값, 즉 중간 값을 취합니다.
 집주인| 게시됨 2023. 5. 25. 오후 8:13:33 |
.NET/C#은 Span을 사용하여 고성능으로 문자열을 처리합니다
https://www.itsvse.com/thread-10596-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com