구문 분석 할 수있는 큰 이진 파일이 있고 성능을 향상시키기 위해 사용할 언어가 확실하지 않습니다. 처음에는 GUI로 C# WPF를 사용하고 파싱에는 C DLL을 사용할 것입니다. 하지만 내 타겟 PC는 64 비트 머신이다. 그리고 나는 VS 2008에서 C DLL 프로젝트를 설정하는 데 어려움이있었습니다. 그래서 만약 내가 C++이나 C#으로 파싱을해야한다면 생각하고 있습니다. 나는 C++/C#의 파일 읽기 속도가 확실하지 않다. 내 파일이 꽤 크기 때문이다. 속도는 매우 중요합니다. 아무도 나에게 제안을 줄 수 있니? 덕분에 .이진 파일 구문 분석 : 성능
답변
언어에 중점을 두지 않고 (다른 사람들이 언급 한 것처럼 효과가 거의 없음), 접근법에 중점을 둡니다.
일반적으로 파일 매핑 (.NET 4.0의 새로운 MemoryMappedFile
클래스에서 사용 가능)을 사용하는 것이 좋습니다. 이것은 일반 패스를 사용하여 수행 할 수있는 단일 패스, 전진 전용 검색을 수행하지 않는 한 좋습니다.
관리되지 않는 코드가 .NET에 노출되지 않은 파일 열기 루틴 (특히 파일을 임의 또는 순차적으로 액세스하려고한다고 캐시 관리자에게 알리는)에 전달할 수 있다는 힌트가 있습니다. 그러나 이러한 기능이 부족하면 성능에 큰 영향을 미치지 않을 것입니다.
나머지 프로그램을 쓰는 언어를 선택하십시오. 파일 스트림을 실행하고 빨판을 읽으십시오.
사용하는 코드에 관계없이 데이터가있는 곳으로 가려고 디스크를 기다리는 중일 것입니다.
Windows의 생명은 우수 플랫폼 덕분에 다른 플랫폼보다 약간 간단합니다. Overlapped IO API. 실제로 성능을 높이려는 경우 사용하려는 것입니다. 겹친 IO는 IO가 순서가 틀리게되는 것을 허용합니다. 실제로 FileStream은 두드리기에서 중복 된 IO를 사용한다는 것을 알 수 있습니다. 그 한계 내에서 일할 수 있다면 그냥 사용하십시오. 그렇지 않으면 관리되는 C++ 래퍼를 만들어 ReadFile을 사용하여 읽을 수 있습니다.
이 방법이 올바른 이유는 디스크 IO가 프로그램에서 가장 느린 부분이어야한다는 것입니다. 겹쳐진 입출력을 사용하면 디스크에 액세스하는 다른 방법이 없다면 처리량에 대한 디스크의 실제 한계에 근접 할 수 있어야합니다. 데이터 구조로의 디코딩은 간단해야합니다. 그렇지 않은 경우 데이터를 파싱하는 방법을 다시 검토해야합니다.
오버랩 된 입출력이 좋다는 점에 동의하지만 (파일 매핑의 두 번째) 겹쳐진 'FileStream'을 얻으려면 부울 async 매개 변수를 사용하고'true '를 전달하는 생성자 중 하나를 사용해야합니다. 'File.Open', et. al. 중첩 된 I/O를 사용하지 마십시오. –
내가 아는 사람들에게 물어 보겠다.하지만 mem 매핑 된 파일이 중복 된 I/O를 사용하고있는 것 같다. –
아니오; 메모리 매핑 된 파일은 매우 다른 접근 방식입니다. [Windows Internals] (http://tinyurl.com/23seaj8)에는 다양한 I/O 메소드의 작동 방식에 대한 훌륭한 설명이 있습니다. –
- 1. Ruby에서 이진 파일 구문 분석
- 2. XML 구문 분석 성능 향상
- 3. 구조체의 내용을 이진 파일로 구문 분석
- 4. .NET 이진 파일 읽기 성능
- 5. cv 파일 구문 분석
- 6. apk 파일 구문 분석
- 7. bmml 파일 구문 분석
- 8. 구문 분석 XML 파일
- 9. Python으로 파일 구문 분석
- 10. 파이썬 구문 분석 파일
- 11. iOS 파일 구문 분석
- 12. 텍스트 파일 구문 분석
- 13. 성능 분석 방법 GNU Make 파일
- 14. xml asp.net의 구문 분석/쿼리 성능 질문
- 15. LINQ로 텍스트 파일 구문 분석
- 16. XML 파일 구문 분석 -options?
- 17. 규칙 기반 파일 구문 분석
- 18. 파이썬에서 텍스트 파일 구문 분석
- 19. 자바에서 XML 파일 구문 분석
- 20. Perl에서 라텍스 파일 구문 분석
- 21. iPhone - Excel 파일 구문 분석
- 22. .NET에서 XML 파일 구문 분석
- 23. 안드로이드 구문 분석 JSON 파일
- 24. 증가하는 로그 파일 구문 분석
- 25. 문제 구문 분석 HTML 파일
- 26. Python에서 RDF 파일 구문 분석
- 27. uniprot 플랫 파일 구문 분석
- 28. Python에서 변수 파일 구문 분석
- 29. 플랫 파일 소스의 빠른 구문 분석 속성
- 30. Perl에서 한 번에 여러 파일 구문 분석
언어가 거의 비슷하지 않습니다. –
... 불필요한/조숙 한 최적화라고합니다. –
나열된 모든 언어가 파일 입출력을 수행하기 위해 OS를 호출한다고 생각하십시오. –