Skip to content


VisualStudio 2010 체험(?)기

도입 예정이긴 하지만, 일단 평가 목적으로 몇 가지 테스트해보고, 기존 코드 베이스도 좀 옮겨보고 해본 체험기.

나 자신이 주 개발을 C++/Python으로 하는지라, 이 이하의 내용은 C++ 프로그래머 관점이 주다.

C++ 변경 사항(C++ TR1/C++ 0x) 반영에 따른 변화

lambda 구문 추가. 예전에 썼듯이, C++ 은 효과적인 익명 함수 문법이 없기 때문에, 굉장히 괴악한 삽질을 하고서야 closure 비슷한 구문을 만들 수 있었다. 하지만 이런 게 지원 되면 (어차피 functional 에 해당 기능도 추가되고 해서) 상대적으로 쉽게 이를 만들 수 있게 된다.

rvalue reference 및 이를 사용한 STL 구현 변경. “값”에 해당하는 (의미론적으로 위치가 없는) rvalue 참조자가 생겼다 (type&& 문법으로 표기). C++ 의 철학 중 하나가, “사용하지 않는 것의 대가를 치르지 말아라” 인 게 괜한 게 아님. (특히) STL 컨테이너에서 임시 객체 할당하는 경우, 복사 연산이 상당히 줄어들게 된다. (move semantics / perfect forwarding)

rvalue/lvalue 자체가 좀 헷갈리시는 분들은 Visual C++ 팀 블로그의 Rvalue references 란 글을 읽어 보자.

nullptr 지원, auto 타입 지정자 설정 등으로 상대적으로 코드를 쓰기 간편해짐. 엄청 복잡한 템플릿 기반 컨테이너(…)의 iterator 같은걸 생각하면 정말 머리가 아픈데 – 대부분 typedef 땜 빵을 하기야 하지만 – 이런걸 상대적으로 쉽게 넘어가게 해준다.

대부분의 TR1 헤더 및 일부 C++ 0x 기능이 헤더에 추가됨. 문제는 이런 헤더 파일들의 변화로, boost 라이브러리를 사용하는 라이브러리 중 일부가 컴파일 되지 않는다. google-test 1.4.0 릴리즈도 tuple 을 내부적으로 정의해서 쓰고 있어서 이름 충돌 –_- 을 겪게 된다. 내가 짠 라이브러리 중엔 identity functor 를 정의해 쓰던 게 충돌하고 / type_traits 를 사용한 코드도 충돌하고 / boost::function 을 쓰는 코드도 충돌했다(바로 그 closure 코드 –_-).

문제는 내가 작성하는 라이브러리를 몇 가지 VS 버전에서 컴파일 되도록 해야 해서, 정말 하기 싫었던(…), _MSC_VER 값 가지고 조건부 컴파일을 몇 개 추가 했다.

빌드 관련 변경 사항

Native multi-targeting 이란 기능이 추가. VS 2010 솔루션 파일 하나 가지고, VS 2008 혹은 VS 2005 의 툴 체인을 사용해서 빌드 할 수 있게 수정되었다. 다만 이전 버전이 설치되어 있어야 하고, VS 2005는 공식 지원이 아님. 근데 VC++ 팀 블로그에 해당 프로퍼티 파일들이 올라와 있어서 그냥 하니까 되더라;

다만 일부 post-build / pre-build 이벤트에서 msbuild 로 빌드하게 했는데, 이 설정들은 자동으로 컨버팅 되질 않아서, 좀 괴로웠음. 게다가 이건 버전 별로 어떻게 나눠야 할지 좀 갑갑함…

MSBuild 버전이 올라가고, 좀 더 툴 자체가 리파인 되었음. 로그 출력도 좀 더 정갈(?)해지고…

빌드 속도 자체는 광고하던 링크 속도 향상은 미미했던 것 같고, 일부 테스트에선 오히려 느려지기도 하던데 (5% 미만 수준이긴 했지만…).

그리고 컴파일 과정에서 사용하는 플랫폼 SDK 버전이 낮으면(같이 포함된 7.0A 이상을 써야 함) rc 가 이상한 에러를 내뱉는다. 그리고 (기본) include, lib, exe .. path 에 해당하는 설정이 다른 곳으로 이전됨…

컴파일러에서 정의하는 상수들 중 일부가 변경됨. 이건 별도 빌드 파일인 경우엔 신경 쓰지 않으면 곤란해질지도 모르지만, 일단 테스트하는 동안엔 별 문제 안 생겼음.

IDE 에서 눈에 띄는 것들

제대로 된 다중 모니터 지원. 이젠 모니터 세 개를 개발 머신에 물려도 될 것 같다. 일부 출력/watch/… 창만 IDE 프레임 밖으로 꺼낼 수 있었는데, 이젠 개별 편집 창을 꺼낼 수 있게 변경. 게다가 “창 별로” 확대 기능을 지원한다. 이건 시연용?

인텔리센스는 조금 나아진 듯도 하지만, 이건 오래 안 써보면 모르겠고. WPF를 써서인지 메모리 사용량은 좀 늘었지만(약 50~150MiB쯤?), 이 정도는 램 가격 내려간걸 생각하면 별거 아니고.

이 저작물은 별도로 명시하지 않은 경우, Creative Commons Attribution-Share Alike 3.0 Unported License에 따라 이용하실 수 있습니다.

No related posts.

Posted in Computer.

Tagged with , , .


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Digitz says

    우리 회사도 VS좀 썼으면..



Some HTML is OK

혹은 트랙백 보내기 / or, reply to this post via trackback.