Você pode ver a página em https://under-linux.org/content.php?...res-RE2-para-C
Você pode ver a página em https://under-linux.org/content.php?...res-RE2-para-C
Engraçado, fui fazer um benchmark pra ver qual implementação era melhor: GNU, Boost::Xpressive ou RE2.
Regex:String para match: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}(tempos em segundos)Código :http://img4.catalog.video.msn.com/Image.aspx?uuid=be0857c3-a54d-4b74-bfae-bdf9013315bf&w=112&h=84
Boost::Xpressive teve o seguinte resultado
Já o GNU, consumia a memória indefinidamente, até o kernel dar kill no processoCódigo :tempo função: 9.54116 tempo médio por execução: 9.54116e-05. Pode ser minha função que esteja errada, sei lá, mas ela nunca deu problema
Já essa RE2:
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 :tempo função: 33.2502 tempo médio por execução: 0.000332502
Código compilado com
Já o source do function_profiler, segue a parte importante:Código :g++ -O3 -s -march=native -mtune=native -msse3 -mssse3 -Wall -Wextra function_profiler.cpp -o function_profiler -lre2 -lpthread
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.
No mínimo curioso... :-)
@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