2011-01-03 4 views
2

괜찮은 정규식 엔진에 대한 검색을 시작했습니다. 그것은이 페이지 Benchmark of Regex Libraries에 나를 착륙 시켰습니다. 나는 RE2을 사용하기로 결정했다. 왜냐하면 그것은이 목록에서 최고의 FSA 엔진으로 보이기 때문이다.누군가 C# 응용 프로그램에서 RE2를 사용 했습니까?

내 마지막 응용 프로그램은 C#의 WPF를 사용하여 작성됩니다. regex 라이브러리는 일괄 처리 모드에서 더 많이 사용됩니다. 그러나 다른 비즈니스 로직의 대부분은 C#으로 작성되므로 C#을 통해 RE2 라이브러리를 사용할 계획입니다.

누구나 비슷한 것을했거나 C#을 통해 RE2를 사용하고 조언이나 조언이 있다면 알려주세요.

감사합니다.

+2

C#/.NET이 상당히 견고한 경우 C++ 정규 표현식 라이브러리를 사용할 때 속도가 빨라야합니까? 조기 최적화라고 생각합니다. –

+1

시기상조는 아니지만 최적화를 실현했습니다. 분당 기준으로 수행해야하는 경기의 수에는이 항목이 필요합니다. 다른 enivronment에서 우리는 C++ boos 라이브러리를 사용하고 있었고이 C++ 웹 서비스를 사용하는 제 3 자 프로그램을 사용하여 별도의 웹 서비스가 만들어졌습니다. –

+2

여전히 .NET 엔진이 해당 목록에 없음을 알았습니다. 최소한 C#의 RE2와 비교해야합니다. –

답변

1

그래, 나는 다니엘과 함께이 사람이다. . . Reg Exp의 일부 불량 구현에서 사냥하러 가기 전에. . . 나는 내가 할 수있는 정규 표현식을 미리 컴파일하고, 탐욕스러운 옵션 등이 모두 올바르게 설정되었고 reg 표현 자체가 어떤 식 으로든 "멍청한"것이 아니 었는지 확인했다. . .

표준 패키지를 교체하는 것이 가장 좋은 해결책이 아닌 것으로 판단됩니다. 물론 귀하의 요구 사항에 대해 더 많이 알지 못해도 확실히 알기가 어렵습니다. . . 하지만 RegExp 패키지의 영향이 성능면에서 엄청난 것이라면 RegExp를 먼저 살펴 보겠습니다.

프랭크

+1

여기에서 발언을 바탕으로 .NET의 컴파일 된 정규 표현식에 대해 살펴 보았습니다. 가능한 한 빨리 .NET과 RE2를 비교하는 테스트를 수행 할 것입니다. 나는 결과를 여기에 게시 할 것이다. –

+0

혹시이 일을 해보셨습니까? 나는 당신의 결과에 매우 관심이 있습니다. – Grubsnik

1

나는 응용 프로그램에서 RE2 닷넷을 사용하고,이 가장 정규식 필터링 도구 이제까지 것을 말해 보자했다. 대부분의 경우 성능이 10 배 이상 개선되었습니다.

당신은 비록 귀하의 요구 사항에 따라 다르다 C++ 여기에 .NET 라이브러리에있는 소스 코드, https://github.com/0xcb/Re2.Net

을 다운로드 할 수 있습니다. 텍스트 파일이 있고 정규 표현식 목록을 사용하여 파일을 필터링해야하는 경우에는 GREP을 사용하는 것이 좋습니다. 성능이 중요한 거대한 정규 표현 집합을 사용하여 큰 데이터 집합을 필터링하려는 경우 RE2로 이동할 수 있습니다. 그러나 https://code.google.com/p/re2/wiki/Syntax에 나열된 구문의 제한 사항에 유의하십시오.

관련 문제