일부 텍스트 파일의 각 줄마다 처리량이 많은 실시간 프로젝트가 있는데이 텍스트를 저장하기 위해 무엇을 제안합니까?대용량 파일을 문자 배열로 저장하는 것이 맞습니까?
지금 내가하는 일은 모든 텍스트 파일을 char * 변수에 저장 한 다음 파일 대신 해당 변수로 작업하는 것이다. 내 문제는 텍스트가 커지면 어떻게 될까? char 배열의 제한에 도달 할 가능성이 있으며 메모리 힙이 커질 것입니다. (
내가 생각할 수있는 또 다른 해결책은 텍스트의 특정 줄을 원할 때마다 파일과 그것을 읽으면서 함께 일할 수 있지만,이 솔루션은 내 프로그램이 너무 느려지고, 앞에서 언급했듯이 시간이 중요합니다. 무엇을 사람들에게 제안해야합니까?
빠른 다른 방법이 있습니까? 내가 사용할 수있을 정도로 충분합니까?
어떤 RTOS가 사용되었는지는 언급하지 않았습니다 (또는 귀하의 "실시간"은 단지 "빠름"이어야합니다). 메모리 매핑 파일이있을 수 있습니다. – KIIV
@KIIV 그것은 빠른 친절해야합니다 :) –
그것은 정말 상황이나 파일이 무엇입니까에 따라 다릅니다. 상황에 따라 성능을 높이고 싶다면 파일을 원시 텍스트가 아닌 빠른 내부 데이터 구조로 미리 파싱하는 것이 좋습니다. 파일이 메모리가 한계점에 이르기까지 거대하면 적절한 인덱스가있는 데이터베이스로 파싱하고 데이터베이스에서 작업하는 것이 좋습니다. 어느 쪽이든, 나는 가능한 한'char *'대신'std :: vector'또는'std :: string'을 사용하는 것이 좋습니다. 그것은 아마도 당신의 인생을 짧고 긴 실행에 조금 더 쉽게 만들 것입니다. –
Taywee