줄리아에서 문자와 정수의 이퀄 오퍼레이터 == 속도 비교
결론
배열의 각 원소를 Equal Operator ==
를 통해 비교하면 정수보다 Char
가 빠르다.
속도 비교
julia> integer = rand(1:5, N); print(typeof(integer))
Array{Int64,1}
julia> character = rand(['S','E','I','R','D'], N); print(typeof(character))
Array{Char,1}
julia> @time integer .== 1;
0.009222 seconds (6 allocations: 1.196 MiB)
julia> @time character .== 'S';
0.005266 seconds (7 allocations: 1.196 MiB)
위의 코드는 정수와 문자로 이루어진 배열에서 각각 1
과 S
가 어디에 있는지 파악하는 프로그램이다. 정수냐 문자열이냐의 차이 빼고는 정확히 같으나, 시간 소요는 두배에 육박할만큼 큰 차이가 난다. 코드 최적화 과정에서 일상적으로 사용하는 방법이므로 되도록이면 문자를 사용하는 것이 권장된다.
추가 연구
julia> string = rand(["S","E","I","R","D"], N); print(typeof(string))
Array{String,1}
julia> @time string .== "S";
0.072692 seconds (7 allocations: 1.196 MiB)
당연하지만 문자character가 아닌 문자열string을 사용하게되면 10배 이상의 속도 저하가 발생한다.
환경
- OS: Windows
- julia: v1.5.0