Lyn
조회 수 41399 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이번엔 lexical_cast 에 대해서 알아보자.
cast 란 이름에서 눈치챗겠지만 일종의 캐스팅 연산자(인 척 하는 함수) 이다.
string -> Integer 같은 상식적으론 말이 되지만 C++문법상으론 말이 안되는 일들을 처리한다.

일단 예제코드를 소개한다.
timer 에 관해서는
http://lunapiece.net/3795 를 참조해라

#include <boost/lexical_cast.hpp>

#include <cstdlib>

#include <string>

#include <boost/timer.hpp>

 

using namespace std;

using namespace boost;

 

string Number = "1024768";

 

void StrToIntAtoi()

{

        int num;

        for(int i=0;i < 1000000; ++i)

        {

               num = atoi(Number.c_str());

        }

        printf("atoi : %d\n", num);

}

void StrToIntStringStream()

{

        stringstream sst;

        int Num;

        for(int i=0;i < 1000000; ++i)

        {

               sst << Number.c_str();

               sst >> Num;

        }

        printf("StringStream : %d\n", Num);

}

void StrToIntLexicalCast()

{

        int num;

        for(int i=0;i < 1000000; ++i)

        {

               num = lexical_cast<int>(Number);

        }

        printf("LexicalCast : %d\n", num);

}

int _tmain(int argc, _TCHAR* argv[])

{

        timer t;

        printf("atoi 를이용한방법\n");

        t.restart();

        StrToIntAtoi();

        printf("%lf \n", t.elapsed());

 

        printf("StringStream 을이용한방법\n");

        t.restart();

        StrToIntStringStream();

        printf("%lf \n", t.elapsed());

 

        printf("lexical_cast 를이용한방법\n");

        t.restart();

        StrToIntLexicalCast();

        printf("%lf \n", t.elapsed());

 

        return 0;

}

 

.....

예제코드 자체는 별 문제가 없었으리라 본다. 준비작업도 필요없고 간단하게 쓸 수 있어서 참 좋아보이기는 한다.
하나의 함수로 이런저런 캐스팅을  다 할수 있으니 다형성도 뛰어나다.
그러나 치명적인 문제가 딱 하나 있는데...

 

 

바로 이거다 속도 =_=;

stringstream 에 비해 약 10배, atoi 에 비해선 대략 50배 가량 느리다 =_=;; 편의성을 위해서 가끔 쓰는정도라면 몰라도 자주 반복되는 루틴에서는 쓰지 않아야 하겠다.

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
157 boost::interprocess::managed_shared_memory의 동작에 관하여 Lyn 2014.08.22 208495
156 VC++ 2013 을 사용 할 경우 실행환경을 정확히 확인해야할 경우가 있습니다. file Lyn 2014.10.08 190300
155 Web 솔루션의 빌드속드와 리로딩속도에 관한 비교 4 Lyn 2014.08.29 175728
154 VS2015 Preview가 출시 되었습니다. Lyn 2014.11.13 64569
153 C++ new 연산자의 진실 2 file Lyn 2009.08.19 57908
152 네... 오늘 그날입니다 그날 Lyn 2014.12.10 52307
151 Microsoft C++ MVP 리워드를 개봉 해 보았습니다. 3 file Lyn 2013.10.11 51042
150 IIS 의 Application Pool 실행 계정이 ApplicationPoolIdentity 로 되어있을 경우 폴더 권한 부여 방법 Lyn 2014.04.15 50247
149 Windows 용 Redis 설치하기 (from nuget) file Lyn 2014.11.12 46940
148 [Boost 살펴보기] 3. timer Lyn 2009.05.11 44208
147 [Boost 살펴보기] 8. Tokenizer file Lyn 2009.06.11 42711
146 사용중인 FireFox 플러그인. Lyn 2010.05.18 42342
145 [Boost 살펴보기] 7. String Algorithm2 Lyn 2009.05.20 42104
144 [Boost 살펴보기] 6. String Algorithm1 Lyn 2009.05.12 41653
» [Boost 살펴보기] 5. lexical_cast file Lyn 2009.05.12 41399
142 Compare, Merge 툴 간의 비교. - 작성중 1 Lyn 2009.12.08 40843
141 [잡설]델파이 / C++ Builder 하는 사람들의 문제점. Lyn 2010.02.07 39628
140 Google C++ Coding Style - 번역중 Lyn 2010.03.28 39275
139 [개인자료] 윈도우 재설치 후 설치 하는 프로그램 Lyn 2010.01.03 39059
138 Delphi 2009 Generic 살펴보기 1 Lyn 2008.09.29 38836
Board Pagination Prev 1 2 3 4 5 6 7 ... 8 Next
/ 8