티스토리 뷰

C#

String, StringBuilder

갱생쌩유 2012. 7. 5. 09:31

GetPrivateProfileString 함수는 ini 파일에서 값을 읽어들이는 역할을 한다.

//ini파일 읽기
        public string Getinivalue(string section, string key)
        {
            StringBuilder temp = new StringBuilder(255); //Stringbuilder -> 인스턴스가 지정될 시간에 저장할 수 있는 최대의 문자수 255
            int i = GetPrivateProfileString(section, key, "", temp, 255, inipath);
            return temp.ToString();
        }

 


String과 StringBuilder는 문자열을 다루는 객체들이다.

But.

String과 StringBuilder는 문자열을 다루는데 있어 차이점이 있다.

String은 문자열을 처리하는 과정(추가, 삭제, 변환등등)에서

새로은 객체를 생성해야만 한다.

즉, string test = "aaa";

string test2 = test.Replace("");

때문에 많은 양의 오퍼레이션 동작을 진행하게되면

속도 저하와 메모리 누적이 발생된다.

StringBuilder는 정해진 객체의 크기를 정해놓고 사용가능하다.

StringBuilder test = new StringBuilder(12);

이러면 자동으로 12*2 만큼의 메모리 공간을 할당해놓는다.

문자열 처리는 메소드로 제공해주는 함수를 사용한다

하기는 속도비교인데, 확실히 StringBuilder 가 빠르다.

 

class MainApp
{
static void Main(string[] args)
{
DateTime startTime;
TimeSpan elapsed;

String str1 = "";
startTime = DateTime.Now;
for (int i = 0; i < 50000; i++)
{
str1 += "H"; //새로운 문자열 생성하기
}
elapsed = DateTime.Now - startTime;
Console.WriteLine("String : {0}", elapsed.Milliseconds);

StringBuilder sb = new StringBuilder();
startTime = DateTime.Now;
for (int i = 0; i < 50000; i++)
{
sb.Append("H"); //새로운 문자열 추가하기
}
elapsed = DateTime.Now - startTime;
Console.WriteLine("StringBuilder : {0}", elapsed.Milliseconds);
}
}

////// string 변경시 다른곳에 객체 생성

///// StringBuilder 변경시 동일한 곳에서 변경

// 관련 테스트는 하기와 같다.

string sztemp = "test";
int a =sztemp.GetHashCode();
sztemp += "test2";
int b = sztemp.GetHashCode();

StringBuilder szBld = new StringBuilder(256);
int c = szBld.GetHashCode();
szBld.Append("test2");
int d = szBld.GetHashCode();

이렇게 선언된 경우,

a, b는 다른곳을, c,d는 같은 곳을 가르킨다.

즉, string은 다시 생성, StringBuilder는 같은장소에서 변경..

 

'C#' 카테고리의 다른 글

C# 소켓 서버와 클라이언트를 통한 DB 검색  (0) 2012.07.12
dataGridView에 DB Select만 불러오기  (0) 2012.07.09
listview column 클릭 시 정렬하기  (0) 2012.07.05
ini 파일 설정2  (0) 2012.07.05
ini 파일 설정  (0) 2012.07.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함