Beispiel #1
0
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);
    }
}
Beispiel #2
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;
}