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
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
WPF & C# - datepicker 날짜계산 ( 달력 ) (2) | 2018.06.05 |
---|---|
WPF & C# - out VS ref 키워드 차이점 및 비교 (0) | 2018.06.05 |
WPF & C# - DataGrid 에 mdb 연결 ( db / connection / connect ) (0) | 2018.05.29 |
WPF & C# - 템플릿 내 오브젝트 선택하기 ( Template / object ) (0) | 2018.05.29 |
WPF & C# - 토글버튼 / 리핏버튼 ( ToggleButton / RepeatButton ) (0) | 2018.05.27 |
WPF & C# - Listbox, List<string> ( 리스트박스 / 추가 / 제거 / binding / 바인딩) (0) | 2018.05.25 |
WPF & C# - List<string> 동적 배열 ( 리스트 / array / dictionary ) (0) | 2018.05.24 |
WPF & C# - 색상변환 / 브러쉬, 컬러 ( Brush <-> Color / SolidColorBrush / 색상 형변환) (0) | 2018.05.24 |