#include "nfa/truffle.h" #include "nfa/trufflecompile.h" #include "benchmarks.hpp" #include #include #include #include /* #define RST "\x1B[0m" #define KRED "\x1B[31m" #define KGRN "\x1B[32m" #define KYEL "\x1B[33m" #define KBLU "\x1B[34m" #define KMAG "\x1B[35m" #define KCYN "\x1B[36m" #define KWHT "\x1B[37m" */ void truffle_benchmarks(int size, int loops, int M, bool has_match) { size_t real_size = size; m128 lo, hi; ue2::CharReach chars; chars.set('a'); truffleBuildMasks(chars, (u8 *)&lo, (u8 *)&hi); u8*kt1 = new u8[size]; memset(kt1,'b',size); long double total_sec = 0; long double trans_size = 0; long double bw = 0; if (has_match){ int pos = 0; for(int j=0; j(end - start).count(); total_sec += dt; /*calculate transferred size*/ trans_size += act_size * loops; /*calculate bandwidth*/ bw += trans_size / total_sec; /*convert to MB/s*/ bw += bw / 1048576; /*calculte average time*/ total_sec /= loops; } total_sec /= M; bw /= M; /*covert average time to μs*/ long double ms = total_sec * 1000000; std::cout << "\x1B[35m Case with match in random pos and size: " << real_size << " for "<< loops <<" loops (" << M <<" random possisions checked): \x1B[36m truffleExec elapsetime: \x1B[0m" << (ms/M) << "(μs) \x1B[36m bandwidth: \x1B[0m"<< bw << "(MB/μs)" <(end - start).count(); /*calculate transferred size*/ trans_size = size * loops ; /*calculate bandwidth*/ bw = trans_size / total_sec; /*convert to MB/s*/ bw /=1048576; /*covert average time to μs*/ long double ms = total_sec * 1000000; std::cout<<"\x1B[35m Case with no match in random pos and size: "<(end - start).count(); total_sec += dt; /*calculate transferred size*/ trans_size += act_size * loops; /*calculate bandwidth*/ bw += trans_size / total_sec; /*convert to MB/s*/ bw += bw / 1048576; /*calculte average time*/ total_sec /= loops; } total_sec /= M; bw /= M; /*covert average time to μs*/ long double ms = total_sec * 1000000; std::cout<<"\x1B[35m Case with match in random pos and size: "<< real_size <<" for "<(end - start).count(); /*calculate transferred size*/ trans_size = size * loops ; /*calculate bandwidth*/ bw = trans_size / total_sec; /*convert to MB/s*/ bw /=1048576; /*covert average time to μs*/ long double ms = total_sec * 1000000; std::cout<<"\x1B[35m Case with no match in random pos and size: "<