1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/*
** Written by David Gerdes US Army Construction Engineering Research Lab
** April 1992
** Copyright 1992 USA-CERL All rights reserved.
**
*/
/*
** This is a simple performance comparison between linkm and malloc
** I think it better simulates normal use of the library than
** speed.c or speed2.c
*/
#include <stdio.h>
#include <grass/linkm.h>
struct link {
char let;
struct link *next;
};
#define LINKM
int main(int argc, char *argv[])
{
register int i, j;
VOID_T *head;
struct link List, *tmp, *p;
#ifdef LINKM
head = (VOID_T *)link_init(sizeof(struct link));
#endif
for (j = 0; j < 1000; j++) {
tmp = &List;
for (i = 0; i < 2000; i++) {
#ifdef LINKM
p = (struct link *)link_new(head);
#else
p = (struct link *)malloc(sizeof(struct link));
#endif
tmp->next = p;
tmp = p;
tmp->next = NULL;
}
for (p = List.next; p != NULL;) {
tmp = p->next;
#ifdef LINKM
link_dispose(head, p);
#else
free(p);
#endif
p = tmp;
}
}
#ifdef LINKM
link_cleanup(head);
#endif
exit(0);
}
|