#include #include #include #ifdef FAST #define FUNCNAME "strcpy/strcat" #else #define FUNCNAME "sprintf" #endif extern void use_with_malloc (char *, int, char *, int); extern void use_with_alloca (char *, int, char *, int); int main (int argc, char *argv[]) { char *p1, *p2; int i, len1, len2; if (argc >= 3) { len1 = atoi (argv[1]); len2 = atoi (argv[2]); p1 = malloc (len1 + 1); memset (p1, 'a', len1); p1[len1] = '\0'; p2 = malloc (len2 + 1); memset (p1, 'b', len2); p2[len2] = '\0'; printf ("Use %s for allocation and %s for workload\n", (argc == 3) ? "malloc" : "alloca", FUNCNAME); for (i = 0; i < 10000000; i++) { if (argc == 3) use_with_malloc (p1, len1, p2, len2); else use_with_alloca (p1, len1, p2, len2); } } return 0; }