2016-07-23 7 views
1

일부 텍스트 파일의 각 줄마다 처리량이 많은 실시간 프로젝트가 있는데이 텍스트를 저장하기 위해 무엇을 제안합니까?대용량 파일을 문자 배열로 저장하는 것이 맞습니까?

지금 내가하는 일은 모든 텍스트 파일을 char * 변수에 저장 한 다음 파일 대신 해당 변수로 작업하는 것이다. 내 문제는 텍스트가 커지면 어떻게 될까? char 배열의 제한에 도달 할 가능성이 있으며 메모리 힙이 커질 것입니다. (

내가 생각할 수있는 또 다른 해결책은 텍스트의 특정 줄을 원할 때마다 파일과 그것을 읽으면서 함께 일할 수 있지만,이 솔루션은 내 프로그램이 너무 느려지고, 앞에서 언급했듯이 시간이 중요합니다. 무엇을 사람들에게 제안해야합니까?

빠른 다른 방법이 있습니까? 내가 사용할 수있을 정도로 충분합니까?

+0

어떤 RTOS가 사용되었는지는 언급하지 않았습니다 (또는 귀하의 "실시간"은 단지 "빠름"이어야합니다). 메모리 매핑 파일이있을 수 있습니다. – KIIV

+0

@KIIV 그것은 빠른 친절해야합니다 :) –

+1

그것은 정말 상황이나 파일이 무엇입니까에 따라 다릅니다. 상황에 따라 성능을 높이고 싶다면 파일을 원시 텍스트가 아닌 빠른 내부 데이터 구조로 미리 파싱하는 것이 좋습니다. 파일이 메모리가 한계점에 이르기까지 거대하면 적절한 인덱스가있는 데이터베이스로 파싱하고 데이터베이스에서 작업하는 것이 좋습니다. 어느 쪽이든, 나는 가능한 한'char *'대신'std :: vector '또는'std :: string'을 사용하는 것이 좋습니다. 그것은 아마도 당신의 인생을 짧고 긴 실행에 조금 더 쉽게 만들 것입니다. – Taywee

답변

0

RAM에 저장하려는 이유는 무엇입니까? 메모리 매핑 파일

을 사용하십시오.
+0

그 당시에는 크지 않지만, 나는 더 커질 것이고, 변수 할당보다 빠르게 파일에 매핑 된 파일 일까? –

+3

필요한 경우에만 코드를 다시 작성합니다. 지금이라면 전체 파일을 RAM에 저장해 둡니다. 그대로 두십시오. 무슨 소리 야? 유스 케이스를 제공 할 수 있습니까? – stryku