2016-12-14 4 views
0

저는 16 메가 바이트 텍스트 파일을 처리하는 데이터 마이닝 C# 프로젝트를 만들고 있습니다. 런타임에 파일을 처리해야하므로 사용자가 파일을 선택하면 프로그램이 하나씩로드하고 키워드를 검색하여 개체로 분할해야합니다. 그래서 프로그램은 약 50 개의 객체를 가질 수 있습니다. 각각의 객체는 약 10MB이므로 약 500MB RAM입니다.런타임시 큰 객체를 처리하는 방법

이러한 개체를 한 번에 모두 필요로하지 않으므로 RAM 외부에 어딘가에 저장 한 다음 필요한 것을로드해야합니다.

이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

이럴 당신이 그들을 지키고 싶어하는 경우에 사용자가 파일을 선택한 후에 데이터베이스에 모든 파일을 저장해야한다고 생각합니다. 그런 다음 처리 문제를 처리 할 수 ​​있습니다. 예를 들면 다음과 같습니다.

파일을 구문 분석하고 파일을 추출하려는 경우. 확실히 ANTLR을 사용하는 것을 고려해야합니다. AST (Abstract Syntax Tree) 이상의 모든 작업을 수행합니다. 그리고 텍스트의 구조를 알고 있다면 문법을 정의하고 파일에서 전체 AST를로드 할 수 있습니다. 당신이 텍스트를 통해 단순한 검색을 만들려고 노력하는 경우

Knuth–Morris–Pratt algorithm를 가리 키도록 시도하거나 Trie

를 사용하여 성능을 위해, 대신에 일반 문자열 클래스

StringBuilder 내를 사용하려고
관련 문제