C# 에서 string 타입으로 숫자가 저장되어 있을때 int 타입으로 변경하는 몇가지 방법이 있다.
string n = "1234";
라고 할때,
Method.1
int outValue = Convert.ToInt32(n);
Method.2
int outValue = int.Parse(n);
Method.3
int outValue;
int.TryParse(n, out outValue);
그리고, 여기서 소개할 방법은, C# 의 기본 메서드를 이용하지 않고, 자체적으로 제작을 해보겠다.
문자로 저장된 '0' 이라는 값은 실제 메모리상에는 코드값으로 저장이 되어 있다.
우리가 ASCII 코드라고 부르는 값이다.
실제로 '0' 은 48 이라는 값으로 저장이 되며, '9' 는 57 이라는 값으로 저장이 된다.
하지만, '0' ~ '9' 가 어떤 값으로 저장이 되는지 알필요도 없다.
'0' - '0' 은 0 이 되며,
'1' - '0' = 1 이 되고,
'9' - '0' = 9 가 된다.
string n = '1234'; int outValue = 0;
for (int i = 0; i < n.Length; i++) outValue = outValue * 10 + (n[i] - '0'); } |
outValue 를 확인해보면, 1234 라는 값이 들어있는것을 확인할 수 있다.
이를 Method.4 라고 부르고,
Method.1 ~ Method.4 까지 퍼포먼스 테스트를 해봤다.
1,000,000 개의 4자리 문자열로 된 배열을 만들고,
이를 int 형으로 변환하는 4가지 방법을, 각각 20회씩 실행해 봤다.
Convert.ToInt32
int.Parse
int.TryParse
3가지 방법 모두, 비슷한 결과가 나왔다.
4자리 문자열 100만개를 변환하는데, 0.13 ~ 0.14 초가 걸렸다.
반면, 직접 만들어서 int로 변환한 경우는, 0.03, 0.04 초가 걸렸다. 속도면에서, 기본 메서드 보다, 4배이상 빨랐다.
'개발팁' 카테고리의 다른 글
JQuery 토스트 메세지 사용하기 toast message (1) | 2016.08.25 |
---|---|
자바스크립트 숫자를 한글로 표시하기, 금액 한글표시 (0) | 2016.08.16 |
erwin r7 에서 Physical / Logical Model 컬럼순서 동기화 (0) | 2016.08.09 |
C# 객체의 Deep Copy / Deep Clone 구현 방법 (0) | 2016.08.08 |
C# Singleton - Private Constructor 사용방법 (0) | 2016.08.02 |