Programing (프로그래밍)/WPF & C# (C Sharp)
WPF & C# - foreach vs Join ( 속도 테스트 )
insurang
2018. 5. 27. 19:15
728x90
반응형
WPF & C# - foreach vs Join ( 속도 테스트 ) |
MainWindow.xam
1 2 3 4 | <Grid> <Button Content="속도 테스트
foreach VS join
" HorizontalAlignment="Left" Height="58" Margin="41,47,0,0" VerticalAlignment="Top" Width="166" Click="Button_Click"/> <Label x:Name="lbl" Content="" HorizontalAlignment="Left" Margin="41,110,0,0" VerticalAlignment="Top" Height="51" Width="166"/> </Grid> | cs |
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | string[] arrVal = new string[1000]; private void Button_Click(object sender, RoutedEventArgs e) { // 입력 for (int i = 0; i < 1000; i++) { arrVal[i] = i.ToString(); } lbl.Content += "Join = " + testJoin().ToString() + "\n"; lbl.Content += "Foreach = " + testForeach().ToString() + "\n"; } long testForeach() { int loop = 10; // 반복 측정 횟수 long[] CurrentTime = new long[loop]; // 반복 측정 값 Stopwatch stopWatch = new Stopwatch(); // 시간 측정 함수 string str = null; for (int i = 0; i < loop; i++) { // 측정시작 stopWatch.Reset(); // 스톱워치 준비 stopWatch.Start(); // 스톱워치 시작 foreach (string a in arrVal) str += arrVal; stopWatch.Stop(); // 스톱워치 끝 CurrentTime[i] = stopWatch.ElapsedTicks; } // avarage long avarage = 0; for (int i = 0; i < loop; i++) avarage += CurrentTime[i]; // 측정 값 더하기 avarage = avarage / loop; // 평균값 구하기 (반복 횟수로 나누기) return avarage; // 평균값 리턴 } long testJoin() { int loop = 10; // 반복 측정 횟수 long[] CurrentTime = new long[loop]; // 반복 측정 값 Stopwatch stopWatch = new Stopwatch(); // 시간 측정 함수 string str = null; for (int i = 0; i < loop; i++) { stopWatch.Reset(); // 스톱워치 준비 stopWatch.Start(); // 스톱워치 시작 str = string.Join("", arrVal); stopWatch.Stop(); // 스톱워치 끝 CurrentTime[i] = stopWatch.ElapsedTicks; } // avarage long avarage = 0; for (int i = 0; i < loop; i++) avarage += CurrentTime[i]; // 측정 값 더하기 avarage = avarage / loop; // 평균값 구하기 (반복 횟수로 나누기) return avarage; // 평균값 리턴 } | cs |
속도 차이... 너무 난다.
단순히 string 값을 나열할때는 foreach 대신 Join 써야겠다.
쓸모없이 foreach를 쓰는 경우는 줄여야 겠다.
for 문을 안했다... 깜빡.. ㅡ,ㅡ;
다음에 올릴께요~ ^^;
728x90
반응형