#include "rlib.h" #include "sudoku.h" #include char * xx = "aa"; void * thread_worker(){ tick(); for(uint i = 0; i< 1000; i++){ grid_t * grid = new_grid(18); grid_to_string_c(grid); // printf("%d\n",i); sbuf(xx); //strcpy(xx,"AAA"); } return NULL; } void bench_rtemp_c(){ grid_t * grid = new_grid(18); char * to_copy = sbuf(grid_to_string_c(grid)); uint times_bench = 10; uint times_function = 10000000; printf("Benchmark %d*%d with/without thread lock.\n",times_bench,times_function); RBENCH(times_bench,{ printf("with: "); RBENCH(times_function,{ sbuf(sbuf(sbuf(to_copy))); }); rtempc_use_mutex = false; printf("witout: "); RBENCH(10000000,{ sbuf(sbuf(sbuf(to_copy))); }); }); } int main(){ //rtempc_use_mutex = false; bench_rtemp_c(); rtempc_use_mutex = true; uint worker_count = 4; pthread_t workers[worker_count]; printf("Threading: \n"); RBENCH(1,{ for(uint i = 0; i < worker_count; i++){ pthread_create(&workers[i],0,thread_worker,NULL); } for(uint i = 0; i < worker_count; i++){ pthread_join(workers[i],NULL); } }); printf("Without threading: \n"); RBENCH(1,{ for(uint i = 0; i < worker_count; i++){ thread_worker(); } }); return 0; }