2011-08-09 4 views
3

나는 브라우저에서 요청을 처리하는 웹 서버 프로그램을 가지고 있는데, 이것은 C++로 작성되었다. 몇 가지 이름으로 bbs/wiki/news라는 서비스가 많이 있습니다. ? = 1은 정규식보다 빠른 경우입니까?

  • /뉴스/artical 지원 = 1

    1. /게시판/viewtopic TID = 1

    2. /위키/문서 않았다? 그들은 예를 들어, 서로 다른 URL을 가지고

    이제 URI를 직접 구문 분석 한 다음 다른 작업을 수행합니다. 여기서 bbs를 예로 들어 보겠습니다. 문자열이/bbs /로 시작하면 bbs는 다음 프로세스를 이어받습니다. 그런 다음 bbs가 viewtopic인지 확인하고, 그렇다면 sever가 클라이언트 측에 주제 내용을 보냅니다.

    다른 서비스로 요청을 보내려면 많은 노력을해야하며, 다른 서비스를 수행하려면 서비스가 많아야합니다.

    다른 사람이 현명한 선택인지 여부를 모르겠지만 코드는 이해하기 쉽습니다. 정규식이 그러한 응용 프로그램에 더 빠릅니까? 참여에 대한

    감사합니다 :) if/else 단순히 문자열의 접두사를 확인하여 만약

  • +0

    정규식 대 vs if/else가 사과와 오렌지 인 것으로 보입니다. 아마도 당신은 if/else와 다른 "match"메소드를 사용하여 비교하는 것이 더 좋을까요? – Jody

    +3

    직접 벤치마킹하십시오 - 매우 간단합니다 (사람들의 의견보다 정확합니다). – foxy

    +0

    일반적으로 없습니다. 그냥 측정 해. –

    답변

    2

    , 그럼 더 빨리 될 것입니다. 문자열에 대해 여러 번 전달해야하는 더 복잡한 경우 직접 성능을 측정해야합니다.

    위대한 엔지니어링은 예측 가능한 결과를 생성 할 때 예측 가능한 결과를 산출합니다. 예측 가능한 비용. 사실, 당신이 측정하지 않으면 당신은 공학이 아니라고 말하고 싶습니다.

    리코 마리아니

    +0

    안녕하세요, 이름의 처음 두 문자를 확인하고 싶습니다 .../else 또는 많은 수의 이름을 정규식으로 사용할 경우 더 빠릅니다. –

    +0

    @LalitKumar, if/else이지만 이름 인 경우 유니 코드 인식 비교가 필요한지 생각할 수 있습니다. –

    4

    일반적으로 쓸 빠르고 느린 코드의 결과 (정규식을 사용 포함) 제네릭 프로그래밍 프레임 워크. 정규식 라이브러리가 아마도 당신에게 많은 시간을 낭비하는 것은 CPU 시간의 중요하지 않은 금액으로 코드를 저장하는 것입니다. 더 자주 병목 현상은 대역폭, 디스크 io 및 CPU 사용량 (데이터베이스가 동일한 시스템에있는 경우)과 같은 것입니다.

    중요한 점은, 정규 표현식 라이브러리를 피함으로써 더 빠른 코드를 얻을 수 있다고 분명히 말할 수 있지만, 개선 할 수있는 다른 이유가 없다면 구현을 벤치마킹해야합니다. C++에서 얼마나 효율적인지 알기 위해 테스트하지는 않았지만 샘플 프로그램에서 루틴을 테스트하는 것은 약간의 추가 작업이 될 것입니다.