Visual Studio 2008의 C# IDE 성능 향상

Visual Studio 2008의 C# IDE 성능 향상

이번 visual studio 2008 C# IDE 에 들어간 몇가지 성능 향상에 대해 쓸까 한다.

물론 모든 성능 향상의 목적은 궁극적으로 C# editor가 좀 더 부드럽고 빠르게 사용자에게 반응할수 있도록 하는거다.

이 궁극적인 목적을 위해 2008에는 2005와 다르게 몇가지 tweak을 했다

첫번째가 navigation bar다. 2005 와 그 이전 버젼의 navigation bar는 언제나 source와 synchronous 하게 작동했다. 사용자가 커서를 움직이지 마자 navigation bar가 거기에 따라 바로 update 되었다. 문제는 파일이 대용량일 경우 이 싱크 작업이 에디터를 잠시 먹통으로 만들수 있다는거다.

물론 이 먹통 문제의 핵심은 첫째, 싱크 작업이 UI Thread에서 된다는 점  둘째, 커서를 움직일때 마다 일어 난다는 점이다. 물론 이 보다 더 많은 내부적인 문제가 있지만 하여간 저 2개가 가장 큰 이유라 하겠다.

2008에서는 그래서 이 navigation bar가 asynchronous 하게 바뀌었다. 2008에서 editor를 사용하다가 느끼신 분들도 있겠지만, navigation bar가 더 이상 커서가 움직일때 마다 업데이트 되지 않는다. 다시 말해서 잠시 내용이 out-of-sync 하고 있다가 잠시 기다리면 sync 된다.

작은 파일에서는 별로 차이를 느낄수 없지만, 파일이 커져 갈수록 이 change하나만 으로도 editor가 휠씬 반응이 빠르다.

두번째 향상은 Designer Attribute scanning 이다. 이게 뭐냐면 Solution explorer에 나와 있는 file들을 보다 보면, 어떤 파일은 form 모양을 한 icon을 가지고 있다. 전에는 이걸 역시나 synchronous한 방법으로 detect 했다. 뭐 자세하게 어떻게 detect 했나는 별로 중요하지 않고 이걸 synchronous한 방법으로 하는 바람에 UI thread가 block 되었다는게 중요하다.

2008에서는 이것도 asynchronous하게 바뀌었다. 작은 솔루션일 경우는 별다른점이 없지만 아주 많은 파일이 가진 솔류션일 경우, icon이 전보다 늦게 변하는것을 볼수 있을꺼다.

세번째 향상은 User Comment scanning이다. 이건 예상하듯이 task list에 TODO 같은 user comment를 보여주는 기능이다. 이건 2005에서 이미 Asynchronous 하게 작동 했다 다만 scanning 할때 불필요 한 작업을 너무 많이 했다. 2008에서는 좀도 최적화된 방법으로 scanning을 하도록 바뀌어 있다.

이밖에도 작은 작은 성능 향상이 여러군데 들어 갔다. 전체 적으로 보면 2005 보다 약 2 배 이상 C# Editor의 성능이 향상 되었다.

뭐 아직 우리가 원하는 수준의 반응성을 가지진 못하지만, 계속 향상 시키고 있으니 VS10에서는 더욱 향상된 성능을 기대 해도 될것이라 본다.

혹 VS2008를 사용할때 C# IDE performance 문제가 있으시다면 여기 피드백 남겨 주시면 감사!!

- 수고