d2359fdf51cd947b1d2ef322e9bceeb846ce4263
[fw/sdcc] / sim / ucsim / sim.src / test_mem_speed.cc
1 #include <signal.h>
2 #include <unistd.h>
3 #include <stdio.h>
4
5 #include "memcl.h"
6
7 static int go;
8
9 static void
10 alarmed(int sig)
11 {
12   go= 0;
13   signal(sig, alarmed);
14 }
15
16 int
17 main(void)
18 {
19   class cl_mem *mem;
20   class cl_m   *m2;
21   t_addr a;
22   t_mem d;
23   double counter;
24
25   signal(SIGALRM, alarmed);
26
27   mem= new cl_mem(MEM_SFR, "egy", 0x10000, 8);
28   go= 1;
29   counter= 0;
30   alarm(10);
31   while (go)
32     for (a= 0; go && a < mem->size; a++)
33       {
34         t_mem d2;
35         for (d2= 0; d2 <= 255; d2++)
36           {
37             mem->write(a, &d2);
38             d= mem->read(a);
39             if (d != d2)
40               printf("%ld written to mem and %ld read back!\n", d2, d);
41             counter+= 1;
42           }
43       }
44   printf("%g operations on classic memory within 10 sec\n", counter);
45
46   m2= new cl_m(0x10000, 8);
47   go= 1;
48   counter= 0;
49   alarm(10);
50   while (go)
51     for (a= 0; go && a < m2->size; a++)
52       {
53         t_mem d2;
54         for (d2= 0; d2 <= 255; d2++)
55           {
56             m2->write(a, &d2);
57             d= m2->read(a);
58             if (d != d2)
59               printf("%ld written to m2 and %ld read back!\n", d2, d);
60             counter+= 1;
61           }
62       }
63   printf("%g operations on new memory within 10 sec\n", counter);
64
65   return(0);
66 }