누구든지 내 정수를 std::string 변환 코드로 변환하는 성능을 능가할 수 있나요?
문제:
효율적인 변환 std::string에 정수를 추가하는 것은 다양한 메소드 생성을 촉발한 과제입니다. 이 기사에서는 다양한 접근 방식을 살펴보고 성능을 비교할 수 있는 제출을 요청합니다.
방법:
일반적인 방법은 다음과 같습니다.
-
"C 방식": stringstream.
-
sprintf: 종종 성능을 위해 권장됩니다.
-
Boost의 lexical_cast: stringstream에 의존하지 않는 자체 구현이 있습니다.
-
Ben의 알고리즘: 다음에 최적화됨 데스크톱 및 임베디드 시스템 모두.
-
ltoa(비표준): 널리 사용 가능하지만 사용이 제한될 수 있습니다.
규칙:
제출물은 특정 사항을 준수해야 합니다. 지침:
- 부호 있는 32비트 정수와 부호 없는 32비트 정수를 모두 십진수로 변환합니다.
- 출력을 std::string으로 생성합니다.
- 스레딩 및 신호와의 호환성을 보장합니다. .
- ASCII 문자 집합을 가정합니다.
- 핸들 2의 보수 시스템에서는 INT_MIN이 올바르게 작동합니다.
- 출력은 문자열 스트림을 사용하는 표준 C 버전과 동일해야 합니다.
- VC 2010 및 g에서 컴파일하고 실행합니다.
결과:
우승작 상당한 성능 향상을 보여주었습니다.
- Eugene Smith의 코드: g의 sprintf보다 8배 빠릅니다(http://ideone.com/0uhhX)
- Timo의 코드: sprintf보다 15배 빠릅니다. Visual C에서 (http://ideone.com/VpKO3)
위 내용은 이 정수-문자열 변환 코드의 성능을 능가할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!