공백으로 구분된 부동 소수점 줄이 포함된 대용량 파일을 처리하는 시나리오에서 병목 현상은 파일 액세스에 있지 않은 경우가 많습니다. 하지만 파싱 과정 중입니다.
이 질문은 효율적일 수 있지만 속도가 제한되는 스트림 연산자(>>)를 사용한 연속 추출과 관련된 기술을 소개합니다. 또한 문자열 분할 함수인 strtok이 언급되어 있지만 이를 위해서는 float로의 추가 변환이 필요합니다.
Boost Spirit, 특히 문법 기반 파서가 이를 입증합니다. 이 작업에 대한 탁월한 선택이 될 것입니다. 놀라운 효율성으로 데이터 검증, 오류 보고 및 공백 유연성을 처리합니다.
질문자가 실시한 광범위한 벤치마킹 결과 Boost Spirit은 다른 모든 대안보다 성능이 뛰어난 것으로 나타났습니다.
[성능 비교표 이미지]
C 14를 사용하는 사용자의 경우 업데이트된 벤치마크에서 입증된 것처럼 실험적인 Spirit X3가 훨씬 더 빠릅니다.
아래 코드 조각은 Boost를 보여줍니다. 주어진 라인 형식을 구문 분석하기 위한 Spirit 구현:
bool ok = phrase_parse(f, l, (double_ > double_ > double_) % eol, blank, data);
위 내용은 Boost Spirit이 C에서 공백으로 구분된 부동 소수점 구문 분석을 어떻게 가속화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!