Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- //#define BENCH_ORM
- #define BENCH_CACHE
- #define ITERATIONS 10000
- #define NUM_RUNS 20 //number of overall runs
- new SQL = -1;
- enum e_Player {
- ORM:Orm,
- ID,
- Name[24],
- Money,
- Float:PosX,
- Float:PosY,
- String1[32]
- };
- new Player[ITERATIONS][e_Player];
- new
- BenchStartTime[NUM_RUNS],
- BenchEndTime[NUM_RUNS];
- public OnGameModeExit() {
- mysql_close(SQL);
- }
- StartBenchmark(run) {
- if(run >= NUM_RUNS)
- return 0;
- BenchStartTime[run] = GetTickCount();
- return 1;
- }
- EndBenchmark(run) {
- BenchEndTime[run] = GetTickCount();
- new BenchTime = BenchEndTime[run]-BenchStartTime[run];
- printf("run #%d:\n\t%dms", run+1, BenchTime);
- printf("\t%.4fms\n", float(BenchTime)/float(ITERATIONS));
- #if NUM_RUNS > 1
- if(run == NUM_RUNS-1) {
- new Float:BenchAverageTime;
- for(new r=0; r < NUM_RUNS; ++r)
- BenchAverageTime += float(BenchEndTime[r]-BenchStartTime[r]);
- BenchAverageTime /= float(NUM_RUNS);
- printf("overall average:\n\t%.04fms\n\t%.4fms", BenchAverageTime, BenchAverageTime/float(ITERATIONS));
- }
- #endif
- return 1;
- }
- #if defined BENCH_ORM
- InitOrm(playerid) {
- new ORM:orm_id = Player[playerid][Orm] = orm_create("test1", SQL);
- orm_addvar_int(orm_id, Player[playerid][ID], "ID");
- orm_addvar_string(orm_id, Player[playerid][Name], 24, "Name");
- orm_addvar_int(orm_id, Player[playerid][Money], "Money");
- orm_addvar_float(orm_id, Player[playerid][PosX], "PosX");
- orm_addvar_float(orm_id, Player[playerid][PosY], "PosY");
- orm_addvar_string(orm_id, Player[playerid][String1], 32, "String1");
- orm_setkey(orm_id, "ID");
- return 1;
- }
- #endif
- main() {
- #if defined BENCH_ORM
- printf("Starting data-fetching-by-ORM benchmarking with "#NUM_RUNS" runs and "#ITERATIONS" iterations...\n");
- #elseif defined BENCH_CACHE
- printf("Starting data-fetching-by-cache benchmarking with "#NUM_RUNS" runs and "#ITERATIONS" iterations...\n");
- #else
- #error No benchmark type defined!
- #endif
- mysql_log(LOG_NONE);
- SQL = mysql_connect("127.0.0.1", "root", "test", "1234");
- if(mysql_errno() != 0)
- exit(0);
- #if defined BENCH_ORM
- for(new i=0; i < ITERATIONS; ++i) {
- InitOrm(i);
- }
- #endif
- SetTimerEx("StartRun", 2000, false, "d", 0);
- }
- forward StartRun(run);
- public StartRun(run) {
- if(run >= NUM_RUNS)
- return 1;
- StartBenchmark(run);
- for(new i=0; i < ITERATIONS; ++i) {
- #if defined BENCH_ORM
- orm_select(Player[i][Orm], "Bench_Select", "dd", run, i);
- #elseif defined BENCH_CACHE
- new query[256];
- format(query, sizeof(query), "SELECT `ID`, `Name`, `Money`, `PosX`, `PosY`, `String1` FROM test1 WHERE `ID` = '%d'", i+25000);
- mysql_tquery(SQL, query, "Bench_Select", "dd", run, i);
- #else
- #error No benchmark type defined!
- #endif
- }
- return 1;
- }
- forward Bench_Select(run, playerid);
- public Bench_Select(run, playerid)
- {
- #if defined BENCH_CACHE
- Player[playerid][ID] = cache_get_row_int(0, 0);
- cache_get_row(0, 1, Player[playerid][Name], 1, 24);
- Player[playerid][Money] = cache_get_row_int(0, 2);
- Player[playerid][PosX] = cache_get_row_float(0, 3);
- Player[playerid][PosY] = cache_get_row_float(0, 4);
- cache_get_row(0, 5, Player[playerid][String1], 1, 32);
- #endif
- if(playerid == ITERATIONS-1) {
- EndBenchmark(run);
- SetTimerEx("StartRun", 2000, false, "d", run+1);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement