void test_sort(void **state) { version_sorter_sort(unsorted, ARRAY_LENGH(unsorted)); int i; for (i = 0; i < ARRAY_LENGH(unsorted); i++) { assert(strcmp(unsorted[i], expected_sorted[i]) == 0); } }
static void benchmark_sort(void **state) { int i; clock_t real_start, real_end; struct tms start, end; double user, system, real; real_start = times(&start); for (i = 0; i < 10; i++) { version_sorter_sort(benchmark_list, ARRAY_LENGH(benchmark_list)); } real_end = times(&end); real = ((double)(real_end-real_start)) / sysconf(_SC_CLK_TCK); user = ((double)(end.tms_utime-start.tms_utime)) / sysconf(_SC_CLK_TCK); system = ((double)(end.tms_stime-start.tms_stime)) / sysconf(_SC_CLK_TCK); printf("Real Time: %f\nUser Time: %f\nSystem Time: %f\n", real, user, system); }
VALUE rb_sort(VALUE obj, VALUE list) { long len = RARRAY_LEN(list); long i; char **c_list = calloc(len, sizeof(char *)); VALUE rb_str, dest; for (i = 0; i < len; i++) { rb_str = rb_ary_entry(list, i); c_list[i] = StringValuePtr(rb_str); } version_sorter_sort(c_list, len); dest = rb_ary_new2(len); for (i = 0; i < len; i++) { rb_ary_store(dest, i, rb_str_new2(c_list[i])); } return dest; }