티스토리 뷰
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 |