[ create a new paste ] login | about

Link: http://codepad.org/AQbS4Ilu    [ raw code | output | fork ]

C, pasted on Feb 1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

inline unsigned long long rdtsc() {
    unsigned long long ret;
    __asm__ volatile ("rdtsc" : "=A" (ret));
    return ret;
}

char *times_simple(char *str, size_t times) {
    size_t i, len = strlen(str);
    char *str2 = malloc(len*times + 1);
    for(i=0;i<len*times;i+=len) {
	memcpy(str2+i, str, len);
    }
    str2[len*times] = '\0';
    return str2;
}
char *times_log(char *str, size_t times) {
    size_t n, len = strlen(str);
    char *str2 = malloc(len*times + 1);
    n = len;
    memcpy(str2, str, n);
    while(n <= len*times/2) {
	memcpy(str2+n, str2, n);
	n *= 2;
    }
    memcpy(str2+n, str2, len*times-n);
    str2[len*times] = '\0';
    return str2;
}
int main(int argc, char **argv) {
    static char *str = "hoge";
    char *str2;
    size_t times = 100;
    unsigned long long start, end;

    start = rdtsc();
    str2 = times_simple(str, times);
    end= rdtsc();
    printf("%s x %d = %s\n", str, times, str2);
    printf("time stamp counter: %llu\n", end - start);

    start = rdtsc();
    str2 = times_log(str, times);
    end= rdtsc();
    printf("%s x %d = %s\n", str, times, str2);
    printf("time stamp counter: %llu\n", end - start);

    return 0;
}


Output:
1
2
3
4
hoge x 100 = hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
time stamp counter: 1871674
hoge x 100 = hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge
time stamp counter: 2430


Create a new paste based on this one


Comments: