자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder TStringList 관련해서
2016.04.12 09:31
아래 여러가지 정보 감사드립니다. 실제 뭘 사용하는 지 알 수 있게되어 많은 도움이 되었습니다.^^
현재 이 부분에 대해 두 가지 문의가 있습니다.
TStringList의 경우 다음과 같이 테스트를 해보았는데 실제 라인 수가 2Gb에 한참 못미치더군요.
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++)
MyStringList->Add(IntToStr(i)+IntToStr(j));
메모리 부족을 표시하면서 대략 13,000,000정도에서 멈춤니다. 사실 이 정도라면 윈도우에서 메모리 문제는 없다고 봐야하는데 왜 out of memory 에러가 발생하는 지 모르겠습니다.
이것 때문에 TMemo를 테스트 해보았는데 디스크 입출력이 없음에도 속도가 훨씬 느리구요.
용량문제로 디스크에 TFIleStream을 이용하여 직접 쓰는데 역시 속도가 문제가 되더군요.
TStringList와 같이 메모리에 직접 쓰고 나중에 한꺼번에 저장하는 것보다 속도가 너무 느려서 빠른 데이터저장이 요구될 때 문제가 될 가능성이 높습니다.
예전의 화일입출력 루틴들 (fprintf류들)도 느린 속도때문에 일단 TMemo를 사용을 하고 있습니다.
TSringList의 최대 용량 부분만 확실하게 해결되면 이걸 쓰면 좋을 것 같은데 이에 대해 조언을 해주실 수 있으면 감사드리겠습니다.
C++ Builder TStringList 관련해서
2016.04.12 09:31
아래 여러가지 정보 감사드립니다. 실제 뭘 사용하는 지 알 수 있게되어 많은 도움이 되었습니다.^^
현재 이 부분에 대해 두 가지 문의가 있습니다.
TStringList의 경우 다음과 같이 테스트를 해보았는데 실제 라인 수가 2Gb에 한참 못미치더군요.
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++)
MyStringList->Add(IntToStr(i)+IntToStr(j));
메모리 부족을 표시하면서 대략 13,000,000정도에서 멈춤니다. 사실 이 정도라면 윈도우에서 메모리 문제는 없다고 봐야하는데 왜 out of memory 에러가 발생하는 지 모르겠습니다.
이것 때문에 TMemo를 테스트 해보았는데 디스크 입출력이 없음에도 속도가 훨씬 느리구요.
용량문제로 디스크에 TFIleStream을 이용하여 직접 쓰는데 역시 속도가 문제가 되더군요.
TStringList와 같이 메모리에 직접 쓰고 나중에 한꺼번에 저장하는 것보다 속도가 너무 느려서 빠른 데이터저장이 요구될 때 문제가 될 가능성이 높습니다.
예전의 화일입출력 루틴들 (fprintf류들)도 느린 속도때문에 일단 TMemo를 사용을 하고 있습니다.
TSringList의 최대 용량 부분만 확실하게 해결되면 이걸 쓰면 좋을 것 같은데 이에 대해 조언을 해주실 수 있으면 감사드리겠습니다.
무슨 작업을 하려고 하는지 적어주시고 그것에 대한 답변을 드리는게 더 효과적일 것 같습니다.
스트링리스트의 2G의 인덱스는 이론적인것이구요. 충분한 자원이 뒷받침되야 합니다.
(내부적인 구현은 아시다시피 VCL 소스코드가 공개되어 있으니 라인 추가시 어떤 데이터를 생성하는지 확인하실 수 있습니다.)