Swift 체험.. 1일차
on
올해의 목표인 Swift 배우기를 진행 중이다.
가장 먼저 하려고 하는 일은 Swift라는 언어가 컴파일 되었을 때 얼마나 빠른지 확인하는 것이다.
문제는 산술계산을 주로 하는 내 입장에서 이 언어가 그다지 편리하지 않다는 것이다.
새로운 언어들이 그렇듯 기존 타 언어 사용자들을 끌어모으기 위해서 여러 가지 모듈을 많이 가지고 있다. 내 입장에서는 vDSP라고 하는 모듈이 가장 먼저 눈에 띄였는데 말 그대로 DSP용 모듈인데 생각보다 편리한 기능은 많이 있었지만 언어 자체가 뭐랄까 좀 다루기가 쉽지 않게 되어있었다.
- type에 민감한데 type 변환도 그다지 편리하지가 않다.
가장 큰 문제는 swift가 나온지 얼마되지 않아서 다듬어지지 않았기 때문이 아닐까 싶은데 (그래도 5.x까지 올라갔으니까 상당한 수준이라고 본다) python/java 같은 것들은 적응이 상당히 쉬운 반면 swift는 그렇지 못하다고 본다. iOS에서 앱을 만드는 사람들의 많은 수가 이미 swift로 전환을 한 것으로 알고 있는데, ‘(돈의 힘은) 참 대단하다’라는 생각이 든다.
아주 간단하게 DFT를 가지고 시험해봤다. 128point DFT를 128번 돌려봤다. 왜 128번이냐면 128번 돌렸는데도 엄청나게 확연한 차이가 나기 때문에 더 이상 비교를 할 이유는 없었기 때문이다. 왜 DSP 전용 모듈이 따로 있었는지 여기서 이해가 된다.
무슨 말이냐면 C/C++ 같은 것들은 멍청하게 작성해서 엄청나게 느리게 짜 놓더라도 타 언어들에 비하면 월등히 빠른 결과를 보여준다. 물론 잘 작성해놓으면 사람이 assembly hard coding해놓은 것에 맞먹는 속도가 나오지만 말이다.
Swift(5): 1706882048 ns C++(clang): 192165098 ns
대략 1/10 정도의 시간이 소비되었으니까 이 경우 하나만 놓고 본다면 9배 정도는 빠르다고 봐야지 싶다. 이 정도면 비교를 할 필요가 없다고 봐야 맞다. C++은 별도 optimization option을 켰다거나 g++을 사용한 것도 아니니까 제 속도를 냈다고 보긴 어렵다. 그러니까 실생활에서 보면 10배도 더 난다고 봐야지 싶다만.
python이라든가 java의 경우 100배 1000배 정도 느렸던 것을 떠올리면 swift는 상당히 양호하다고 할 수 있다. Dart라든가 Kotlin 또는 Android를 위한 Java 같은 것들을 떠올려보면 object C가 분명히 빨랐을 것 같고 swift도 제법 느리긴 하지만 java나 dart처럼 느릴 이유는 없으니까 여전히 iOS쪽이 유리하지 않을까 하는 생각을 해본다.