괴발개발 성장기

Study/Go 언어

[golang] if문 대신 switch를 쓰는 이유

지니유 2022. 1. 23. 23:47
반응형

#배경

회사에서 스터디를 하는데 if문 대신 switch문을 쓰는 이유가 뭐냐고 물어보셨다.
단순한게 if문이 복잡할 때에는 가독성이 떨어지니까 switch문을 사용한다고 생각했다.
근데 switch문이 더 속도가 빠르기 때문이라고 하셨다.

 

그래서 switch문이 속도가 더 빠른지 테스트를 해봤다.

 

# Code 작성


func CompareIfWithSwitch(month int64) {

	var season string
	startSwitch := util.CurrentTimeMillis()
	fmt.Println("Switch문 시작 : ", startSwitch)
	for ; month < 100000000; month++ {
		switch month {
		case 1, 2, 12:
			season = "겨울"
		case 3, 4, 5:
			season = "봄"
		case 6, 7, 8:
			season = "여름"
		case 9, 10, 11:
			season = "가을"
		default:
			season = "계절아님"
		}
	}
	endSwitch := util.CurrentTimeMillis()
	fmt.Println("Switch문 끝 : ", endSwitch)
	fmt.Println("Switch문 결과 :", endSwitch-startSwitch)

	time.Sleep(6000)

	startIf := util.CurrentTimeMillis()
	fmt.Println("If문 시작 : ", startIf)
	for month := 0; month < 100000000; month++ {
		if month == 1 || month == 2 || month == 12 {
			season = "겨울"
		} else if month == 3 || month == 4 || month == 5 {
			season = "봄"
		} else if month == 6 || month == 7 || month == 8 {
			season = "여름"
		} else if month == 9 || month == 10 || month == 11 {
			season = "가을"
		} else {
			season = "계절아님"
		}
	}
	endIf := util.CurrentTimeMillis()
	fmt.Println("If문 끝 : ", endIf)
	fmt.Println("If문 결과 :", endIf-startIf)

	fmt.Println(season)
}

for문을 돌려서 if문과 switch문을 비교했는데 2배 차이가 났다.

 

# Code 결과

	Switch문 시작 :  1642949033776
	Switch문 끝 :  1642949033871
	Switch문 결과 : 95
	If문 시작 :  1642949033879
	If문 끝 :  1642949034085
	If문 결과 : 206
	계절아님

 

 

# 결론

if문보다 switch문이 빠르다

반응형