12.10.2013, 16:41
(
Последний раз редактировалось ipsBruno; 13.10.2013 в 09:22.
)
Ultimamente, tenho feitos meus testes com BENCH MARK, mas como й em execuзхes por milissegundo andei notando uma falta de precisгo testes retornados, por este motivo criei minha prуpria BENCH que traz mais informaзхes sobre o processamento do cуdigo, assim podem analisar qual cуdigo й mais rбpido
Ele faz por tempo mйdio, dessa maneira a qualidade da mediзгo й bastante alta. Sгo 333 testes com o mesmo cуdigo para pegar da forma mais preciso possнvel o tempo.
Ele pega o tempo mбximo e mнnimo. Para vocк poder analisar os picos e declнnios no tempo de seu cуdigo. Lembrando que isto pode ser por causa do seu processador em casos de picos muito altos.
Ele processa o nъmero total de segundos (como padrгo) para calcular quanto tempo cada cуdigo levou para ser executado. Este й um bom parвmetro, pois em casos de diferenзas absurdas o resultado do cуdigo mais rбpido sempre serб menor.
Ele tambйm processa o nъmero de execuзхes por milissegundos, dessa maneira vocк tem uma mйdia de quantas execuзхes foram feitas em um ъnico millissegundo e poderб checar qual cуdigo conseguiu se reproduzir mais
Em TESTS й possнvel estipular a quantidade de processamento que vocк quer exigir, por padrгo й 333. Valores muito grandes ou muito pequenos podem atrapalhar no cбlculo dos valores devido ao limite do Pawn. Deixe entre 100 e 5000, й uma mйdia boa
Quanto maior melhor, porem em valores exagerados pode travar seu samp_server, use com cudiado
Problemas: Darб loose indentation em alguns casos, basta ignorar ou usar pragma tabsize
Em Pawn, hб um bug que o primeiro cуdigo se torna mais lento que o segundo. Isto porque й necessбrio criar e alocar novos endereзos e dados na memуria, o que o cуdigo posterior nгo via precisar. Por este motivo, antes dos testes, eu pessoalmente te aconselho a colocar um teste nulo
Em cуdigos muito grande o processamento vai demorar mais. Muito mais. Portanto aconselho-te abaixo o valor do STRESS em TESTS.
Outra coisa importante й o seguinte, quando maior for o valor colocado em TESTS, mais o cуdigo poderб ser analisado e com isto, vocк pode obter uma mйdia excelente dos resultados obtidos, pois a mйdia fica mais precisa.
Bruno da Silva desenvolvedor, e William Luigi idealizador.
[iPs]TeaM
O que ele processa:
Ele faz por tempo mйdio, dessa maneira a qualidade da mediзгo й bastante alta. Sгo 333 testes com o mesmo cуdigo para pegar da forma mais preciso possнvel o tempo.
Ele pega o tempo mбximo e mнnimo. Para vocк poder analisar os picos e declнnios no tempo de seu cуdigo. Lembrando que isto pode ser por causa do seu processador em casos de picos muito altos.
Ele processa o nъmero total de segundos (como padrгo) para calcular quanto tempo cada cуdigo levou para ser executado. Este й um bom parвmetro, pois em casos de diferenзas absurdas o resultado do cуdigo mais rбpido sempre serб menor.
Ele tambйm processa o nъmero de execuзхes por milissegundos, dessa maneira vocк tem uma mйdia de quantas execuзхes foram feitas em um ъnico millissegundo e poderб checar qual cуdigo conseguiu se reproduzir mais
Modo de uso:
pawn Код:
//
TESTS(333);
// O CУDIGO VAI AQUI
PROCESSAR();
RESULTADO("Nome do cуdigo");
Quanto maior melhor, porem em valores exagerados pode travar seu samp_server, use com cudiado
Cуdigo da Include:
pawn Код:
#define CONT@CONT GetTickCount()
#define TESTS(%0); { /*esquentar o processador */ for(new uashushua; uashushua != 9990000; uashushua++) {} /* testar o cуdigo */ new testes___@ [666], mMmEDIA; new j__@; new TTTiem = CONT@CONT; for(new i__@; i__@ != 333; ++i__@ ) { j__@=0;testes___@[i__@] = CONT@CONT;for(; j__@ != %0; ++j__@ ) {
#define PROCESSAR(); }testes___@[i__@] = CONT@CONT - testes___@[i__@];mMmEDIA += testes___@[i__@];}mMmEDIA /= (333);new mmMin = cellmax, mMax = 0;for(new aaa_@_teste; aaa_@_teste != 666; aaa_@_teste++) {
#define RESULTADO(%0); if(mmMin > testes___@[aaa_@_teste]) mmMin = testes___@[aaa_@_teste]; if(mMax < testes___@[aaa_@_teste]) mMax = testes___@[aaa_@_teste];}printf("Resultados para: "#%0" \n\t\n\t Nъmeros de execuзгo a cada milissegundo: %.5f \n\t Tempo mнnimo: %dms Tempo mбximo: %dms e Tempo mйdio: %dms\n\t Tempo Final: %d milissegundos\n\n", float((j__@) / (mMmEDIA > 0 ? mMmEDIA : 1))/1000,mmMin, mMax,mMmEDIA, CONT@CONT - TTTiem);}
Problemas: Darб loose indentation em alguns casos, basta ignorar ou usar pragma tabsize
Dica importante:
Em Pawn, hб um bug que o primeiro cуdigo se torna mais lento que o segundo. Isto porque й necessбrio criar e alocar novos endereзos e dados na memуria, o que o cуdigo posterior nгo via precisar. Por este motivo, antes dos testes, eu pessoalmente te aconselho a colocar um teste nulo
pawn Код:
TESTS(100);
PROCESSAR();
RESULTADO("");
Em cуdigos muito grande o processamento vai demorar mais. Muito mais. Portanto aconselho-te abaixo o valor do STRESS em TESTS.
Outra coisa importante й o seguinte, quando maior for o valor colocado em TESTS, mais o cуdigo poderб ser analisado e com isto, vocк pode obter uma mйdia excelente dos resultados obtidos, pois a mйdia fica mais precisa.
Autoria:
Bruno da Silva desenvolvedor, e William Luigi idealizador.
[iPs]TeaM