GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
speed2.c
Go to the documentation of this file.
1 
2 
3 /*
4  ** Written by David Gerdes US Army Construction Engineering Research Lab
5  ** April 1992
6  ** Copyright 1992 USA-CERL All rights reserved.
7  **
8  */
9 
10 /*
11  ** This is a simple worst case performance comparison between linkm and malloc
12  */
13 #include <stdio.h>
14 #include <grass/linkm.h>
15 
16 struct link
17 {
18  char let;
19  struct link *next;
20 };
21 
22 /*
23  #define LINKM
24  */
25 
26 int main(int argc, char *argv[])
27 {
28  register int i;
29  VOID_T *head;
30  struct link List, *tmp, *p;
31  int rev = 0;
32 
33 
34  tmp = &List;
35 
36 #ifdef LINKM
37  /* link_set_chunk_size (2000); */
38  head = (VOID_T *) link_init(sizeof(struct link));
39 #endif
40 
41 
42  for (i = 0; i < 2000000; i++) {
43 #ifdef LINKM
44  p = (struct link *)link_new(head);
45 #else
46  p = (struct link *)malloc(sizeof(struct link));
47 #endif
48  tmp->next = p;
49  tmp = p;
50  tmp->next = NULL;
51  }
52 
53  for (p = List.next; p != NULL;) {
54  tmp = p->next;
55 #ifdef LINKM
56  link_dispose(head, p);
57 #else
58  free(p);
59 #endif
60  p = tmp;
61  }
62 
63 
64 #ifdef LINKM
65  link_cleanup(head);
66 #endif
67 
68  exit(0);
69 }
#define VOID_T
Definition: qtree.h:17
struct link_head * link_init(int size)
Definition: linkm/init.c:40
struct link_head * link_new(struct link_head *Head)
Definition: new.c:12
void link_cleanup(struct link_head *Head)
Definition: linkm/init.c:64
void * malloc(YYSIZE_T)
int main(int argc, char *argv[])
Definition: gem/main.c:302
void link_dispose(struct link_head *Head, VOID_T *ptr)
Definition: dispose.c:10
return NULL
Definition: dbfopen.c:1394
void free(void *)