+ Responder ao Tópico



  1. #1

    Padrão Artigo: Google Libera Biblioteca de Expressões Regulares RE2 para C++


  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.980
    Posts de Blog
    5

    Padrão

    Engraçado, fui fazer um benchmark pra ver qual implementação era melhor: GNU, Boost::Xpressive ou RE2.

    Regex:
    Código :
    ([a-zA-Z0-9]){8}-([a-zA-Z0-9]){4}-([a-zA-Z0-9]){4}-([a-zA-Z0-9]){4}-([a-zA-Z0-9]){12}
    String para match:
    Código :
    http://img4.catalog.video.msn.com/Image.aspx?uuid=be0857c3-a54d-4b74-bfae-bdf9013315bf&w=112&h=84
    (tempos em segundos)

    Boost::Xpressive teve o seguinte resultado
    Código :
    tempo função: 9.54116 tempo médio por execução: 9.54116e-05
    Já o GNU, consumia a memória indefinidamente, até o kernel dar kill no processo . Pode ser minha função que esteja errada, sei lá, mas ela nunca deu problema

    Já essa RE2:
    Código :
    tempo função: 33.2502 tempo médio por execução: 0.000332502
    Enquanto Boost::Xpressive e GNU retornavam a string marcada, RE2 retornou true ou false, e mesmo assim foi mais lenta (GNU perdeu por estouro de memória?, sei lá hehe)

    Código compilado com
    Código :
    g++ -O3 -s -march=native -mtune=native -msse3 -mssse3 -Wall -Wextra function_profiler.cpp -o function_profiler -lre2 -lpthread
    Já o source do function_profiler, segue a parte importante:
    Código :
    tempo1 = now();
    for(unsigned int iii = 100000; iii != 0; iii--) {
            função_sendo_avaliada_no_momento;
        }
    tempo2 = now();
     cout << "tempo função: " << tempo2 - tempo1 << " tempo médio por execução: " << (tempo2 - tempo1)/100000 << endl;

    Conclusão: continuo com Boost:Xpressive. Mais rápido, e API superior
    Última edição por osmano807; 13-03-2010 às 16:06.

  3. #3

  4. #4
    GNU Fanboy
    Visitante

    Padrão

    @osmano807: não é curioso não cara, é marketing puro ehehehehe

    Eles lançam uma lib nova e fazem muita propaganda sobre, dai os sites replicam e logo a deles (que nem é tão boa assim) fica sendo conhecida como a melhor. Somente caras com a sua iniciativa para identificar os fatos como são.

    Parabéns e continue assim!!

    [ ]s