Files
@ f55ca167cf51
Branch filter:
Location: CSY/reowolf/examples/bench_11/main.c - annotation
f55ca167cf51
2.0 KiB
text/x-csrc
expand section on language validation
3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 9ed6d091a817 9ed6d091a817 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 9ed6d091a817 9ed6d091a817 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 3adc38e5fd32 | #include <time.h>
#include "../../reowolf.h"
#include "../utility.c"
int main(int argc, char** argv) {
int i, j, forwards, num_options, correct_index;
forwards = atoi(argv[1]);
num_options = atoi(argv[2]);
printf("forwards %d, num_options %d\n",
forwards, num_options);
unsigned char pdl[] =
"primitive recv_zero(in a) { "
" while(true) synchronous {"
" msg m = get(a); "
" assert(m[0] == 0); "
" } "
"} "
;
Arc_ProtocolDescription * pd = protocol_description_parse(pdl, sizeof(pdl)-1);
printf("Error str `%s`\n", reowolf_error_peek(NULL));
char logpath[] = "./bench_11.txt";
Connector * c = connector_new_logging(pd, logpath, sizeof(logpath)-1);
PortId native_putter, native_getter;
connector_add_port_pair(c, &native_putter, &native_getter);
for (i=0; i<forwards; i++) {
// create a forward to tail of chain
PortId putter, getter;
connector_add_port_pair(c, &putter, &getter);
// native ports: {native_putter, native_getter, putter, getter}
// thread a forward component onto native_tail
char ident[] = "forward";
connector_add_component(c, ident, sizeof(ident)-1, (PortId[]){native_getter, putter}, 2);
// native ports: {native_putter, getter}
printf("Error str `%s`\n", reowolf_error_peek(NULL));
native_getter = getter;
}
// add "recv_zero" on end of chain
char ident[] = "recv_zero";
connector_add_component(c, ident, sizeof(ident)-1, &native_getter, 1);
connector_connect(c, -1);
printf("Error str `%s`\n", reowolf_error_peek(NULL));
clock_t begin = clock();
char msg = 0;
for (i=0; i<1000; i++) {
correct_index = i%num_options;
for(j=0; j<num_options; j++) {
msg = j==correct_index ? 0 : 1;
connector_put_bytes(c, native_putter, &msg, 1);
if(j+1 < num_options) {
connector_next_batch(c);
}
}
connector_sync(c, -1);
}
clock_t end = clock();
double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
printf("Time taken: %f\n", time_spent);
return 0;
}
|