특정 구간에 코드 실행시간을 알아야내야 하는 경우에 필요한 포스팅 입니다.
코드를 작성하다 보면 딜레이가 발생하거나해서 어느 부분에 오버해드가 발생하여 시스템을 느리게하는지를 알아내야 하는 경우가 생길 수 있습니다.
또는 알고리즘을 공부하다보면 내가 구현한 알고리즘의 속도를 알고 싶을 때가 있습니다.
코드를 작성할때 중간중간 해당 함수나 코드가 느려질 것이 염려된다면 중간 중간 속도를 체크하면서 작성하면 좋습니다.
C# 에서 Stopwatch 클래스를 사용하여 프로그램의 수행시간을 측정할 수 있다.
네임스페이스로 using System.Diagnostics; 를 선언하고 Stopwatch 클래스를 사용하면 되다.
Stopwatch 클래스에 start 함수를 호출하면 시간측정을 시작하게 된다. 그리고 Stopwatch 클래스에 stop 함수를 호출 하면 시간측정이 끝나게 된다. 그리고 ElapsedMilliseconds 변수에 측정한 시간이 저장되게 된다. 그래서 해당 변수에 값을 출력하면 된다. 시간은 ms단위로 저장이 되기 때문에 만약 초단위로 보고 싶다면 /1000을 하면 된다.
아래는 사용 예제이다. 시간측정을하는 start와 stop을 하는 중간에 이중 for문을 사용하여 의미없는 연산을 계속하여 시간이 걸리게 하였다. 이중 for문에 i와 j의 조건값을 바꿔가며 측정시간이 어떻게 변하는지 직접 테스트해노는 것도 좋은 방법이다.
using System.Diagnostics; class Program { static void Main(string[] args) { Stopwatch stopwatch = new Stopwatch(); //객체 선언 stopwatch.Start(); // 시간측정 시작 int sum = 0; for (int i = 0; i < 10000; i++) { for (int j = 0; j < 100000; j++) { sum = i * j; } } stopwatch.Stop(); //시간측정 끝 System.Console.WriteLine("time : " + stopwatch.ElapsedMilliseconds + "ms"); } }
사용할 때 아래의 코드를 복사해서 사용하면 된다.
Stopwatch stopwatch = new Stopwatch(); //객체 선언 stopwatch.Start(); // 시간측정 시작 stopwatch.Stop(); //시간측정 끝 System.Console.WriteLine("time : " + stopwatch.ElapsedMilliseconds + "ms");
추가로 아래 자바와 C,C++의 시간측정 방법이다.
자바(java) 코드의 실행 시간 구하기(시간 측정) : http://hijuworld.tistory.com/2
C, C++ 프로그램 실행 시간 측정 : http://hijuworld.tistory.com/1
'닷넷,C#,.NET' 카테고리의 다른 글
C# 정규식을 사용하여 패턴 매칭(Regex, IsMatch) (4) | 2018.04.24 |
---|---|
C#/.NET String 사용, Length, Split , Substirng, IndexOf,Trim, Contains, StartsWith (0) | 2018.04.23 |
닷넷(.NET) NuGet package 사이트 주소 (0) | 2018.04.17 |
C#/.NET Parse, TryParse로 String을 int,double,DateTime 타입으로 형변환 시키기 (0) | 2018.04.17 |
C# 6.0, 7.0 새로운 기능들 소개 사이트 (0) | 2018.04.16 |