>백엔드 개발 >C++ >Boost Spirit이 C에서 공백으로 구분된 부동 소수점 구문 분석을 어떻게 가속화할 수 있습니까?

Boost Spirit이 C에서 공백으로 구분된 부동 소수점 구문 분석을 어떻게 가속화할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-25 06:25:211046검색

How Can Boost Spirit Accelerate Space-Separated Float Parsing in C  ?

C에서 공백으로 구분된 부동 소수점 구문 분석 가속화

공백으로 구분된 부동 소수점 줄이 포함된 대용량 파일을 처리하는 시나리오에서 병목 현상은 파일 액세스에 있지 않은 경우가 많습니다. 하지만 파싱 과정 중입니다.

기존 기술:

이 질문은 효율적일 수 있지만 속도가 제한되는 스트림 연산자(>>)를 사용한 연속 추출과 관련된 기술을 소개합니다. 또한 문자열 분할 함수인 strtok이 언급되어 있지만 이를 위해서는 float로의 추가 변환이 필요합니다.

Boost Spirit: 최고의 솔루션

Boost Spirit, 특히 문법 기반 파서가 이를 입증합니다. 이 작업에 대한 탁월한 선택이 될 것입니다. 놀라운 효율성으로 데이터 검증, 오류 보고 및 공백 유연성을 처리합니다.

성능 비교:

질문자가 실시한 광범위한 벤치마킹 결과 Boost Spirit은 다른 모든 대안보다 성능이 뛰어난 것으로 나타났습니다.

[성능 비교표 이미지]

Spirit X3: A New Contender

C 14를 사용하는 사용자의 경우 업데이트된 벤치마크에서 입증된 것처럼 실험적인 Spirit X3가 훨씬 더 빠릅니다.

코드 구현:

아래 코드 조각은 Boost를 보여줍니다. 주어진 라인 형식을 구문 분석하기 위한 Spirit 구현:

bool ok = phrase_parse(f, l, (double_ > double_ > double_) % eol, blank, data);

Boost의 주요 장점 정신:

  • 오류 처리 및 보고
  • /-Inf, NaN 및 다양한 공백 지원
  • 입력 끝의 강력한 감지
  • 구문적으로 간결하고 읽기 쉬운 코드

위 내용은 Boost Spirit이 C에서 공백으로 구분된 부동 소수점 구문 분석을 어떻게 가속화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.