Files
@ 28df9835906f
Branch filter:
Location: CSY/reowolf/examples/bench_11/main.c - annotation
28df9835906f
2.0 KiB
text/x-csrc
Reimplement namespaced identifier to support polymorphic args
This is somewhat of a temporary hack, as a namespaced identifier should
not really refer to types or polymorphic arguments. But we need a
tokenizer and a prepass to properly distinguish identifiers from types.
So it works, but error messages may be cryptic.
This is somewhat of a temporary hack, as a namespaced identifier should
not really refer to types or polymorphic arguments. But we need a
tokenizer and a prepass to properly distinguish identifiers from types.
So it works, but error messages may be cryptic.
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;
}
|