Microsoft MVP성태의 닷넷 이야기
stopWatch 늘어짐 문의 [링크 복사], [링크+제목 복사],
조회: 13731
글쓴 사람
차가워 (chagawo1202 at naver.com)
홈페이지
첨부 파일
 

질문 글을 올릴때 부실하게 올려서 글을 다시 작성합니다.
재현 가능한 코드 없이 질문들을 남겨서 죄송합니다.

폼에는 버튼1과 리치텍스트박스1만 있습니다.
버튼을 눌러 시간 측정을 하면 할 수록
소요 시간이 조금씩 점점 늘어납니다.
cpu클럭에 따라 소요시간이 들죽날죽 달리지기는건 당연하지만
스탑워치로 시간 측정을 하면 할 수록 소요시간이 점점 불어나네요.


static Stopwatch stopwatch = new Stopwatch();
        static MyClass[] myArray = new MyClass[1_000_000];

        public class MyClass
        {
            public int cValue = 0;
        }

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 1_000_000; i++)
            {
                myArray[i] = new MyClass();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;

            stopwatch.Reset();
            stopwatch.Start();
            long startTick = stopwatch.ElapsedTicks;

            for (int k = 0; k < 2000; k++)
            {
                for (int i = 0; i < 1_000_000; i++)
                {
                    MyClass tmp = myArray[i];

                    if (tmp.cValue % 2 == 0)
                        tmp.cValue += 2;

                    if (tmp.cValue % 3 == 0)
                        tmp.cValue += 3;

                    if (tmp.cValue % 4 == 0)
                        tmp.cValue += 4;

                    if (tmp.cValue % 5 == 0)
                        tmp.cValue += 5;

                    if (tmp.cValue % 10 == 0)
                        tmp.cValue -= 10;

                    tmp.cValue += 1;
                    tmp.cValue += i;
                    tmp.cValue -= i;
                    tmp.cValue *= i;
                    if (tmp.cValue != 0)
                        tmp.cValue /= i;
                }
            }

            long endTick = stopwatch.ElapsedTicks;
            stopwatch.Stop();
            long ctime = endTick - startTick;
            richTextBox1.Text += string.Format("소요시간 {0:#,#}", ctime) + Environment.NewLine;

            button1.Enabled = true;
        }








[최초 등록일: ]
[최종 수정일: 2/19/2022]


비밀번호

댓글 작성자
 



2022-02-19 06시06분
[차가워] 스탑워치 뿐만 아니라 모든 시간측정 방법에서 소요시간이 늘어나는 걸로 봐서 시간측정이 아닌 다른 문제 같아 보이네요
[guest]
2022-02-19 07시14분
[차가워] 오버플로어가 일아나면 점점 실행시간이 느려지는거 같기도 한데요
[guest]
2022-02-19 09시44분
@차가워 말씀하신 오버플로우 문제가 맞는 것 같습니다. for 루프의 후반으로 갈수록 오버플로우 발생이 증가해 균일하게 발생하는 지점까지 실행 시간이 늘어나는 듯합니다. 그래서 아예 오버플로우가 항상 발생하도록 for i 루프의 초기에 tmp.cValue = int.MaxValue를 넣어 두면 실행 시간이 균일하게 나옵니다. 반면 tmp.cValue = 1000; 정도로 아예 오버플로우가 발생하지 않게 만들어도 균일하게 나오지만 오버 플로우가 발생했을 때보다 실행 시간이 좀 더 빨라집니다.

재미있는 테스트 결과를 얻으셨군요. ^^
정성태

... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
4733feel...6/15/201621999타 서버로 소스 이전 중 [3]파일 다운로드1
4732구봉근6/14/201619806안녕하세요 [1]파일 다운로드1
4731초급개발자6/7/201622464Windows Form Application는 사라질까요? [2]
4730김시현6/4/201620346책으로 공부하던 도중 생성자에 대해서 궁금한게 생겼는데 혹시 답변좀 해주실수 있나요? [1]
4729Jeah...6/3/201622185C#.Net 프로그램에서 C++로 만들어진 dll 파일 이용관련 문의 하나 드립니다. [3]
4727링거5/30/201619918WPF MediaElement 파일 실행 후 삭제시 오류 문의 [1]파일 다운로드1
4728링거5/30/201621306    답변글 [답변]: WPF MediaElement 파일 실행 후 삭제시 오류 문의 [2]파일 다운로드1
4726spow...5/25/201620744덧글을 달고 나서 F5를 눌렀을 때 똑같은 덧글이 달리는 현상 고쳐주세요 [4]
4725Futu...5/23/201619730책 잘보고 있습니다. Task관련 질문을!!! [1]
4724학생15/23/201621663웹소켓과 소켓 관련해서 질문 드립니다. [2]
4722지나가던...5/15/201624838Part 3 pdf파일 그림 재수정 문의 [1]
4723지나가던...5/16/201622188    답변글 [답변]: Part 3 pdf파일 그림 재수정 문의 [1]
4721김종희4/30/2016223833D 시뮬레이션 개발 [1]
4720DC4/29/201620739C# 6.0 델리게이트 인스턴스화 관련 질문~ [2]
4719이민구4/29/201622888[시작하세요! C# 프로그래밍] 4.5.1.6 열거형 마지막 예제 질문입니다. [4]파일 다운로드1
4718ds4/27/201619810오라클 DB 칼럼에 있는 특정 데이터를 가져올수가 있나여? [1]
4717최령진4/26/201619087모바일 웹 앱 관련문의 드립니다 [1]
4715과객4/7/201621424TFS 와 Stylecop Integration 시 체크인 정책 적용 방법이 궁금합니다. [1]
4714임형복4/7/201620279DLL 을 프로세스처럼 사용하기 [3]파일 다운로드1
4713김태훈4/5/201619073하위 폴더 권한 상속 문제 [1]
4712차가워4/5/201622891멀티코어 스레드 문의 [1]
4711이대희4/1/201619977Xamarin 라이센스 변경 (Visual Sutuio 무료 사용) [2]
4709가가멜3/25/201644719국내 WPF 책은 왜 2010 년 이후로 전멸인지요? [1]
4704최훈3/15/201626377C# 6.0 예제 7.1 관련 질문입니다. [2]
4702popo3/14/201623662C# WeakReference이 CPU 플랫폼 설정 마다 결과가 틀리게 나옵니다. [9]
4701쌉쓰릅3/13/201621607uwp에서 그림판의 지우개 기능을 구현하려고하는데요 참고할 만한 정보가 있을가요? [2]
... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...