#include <stdio.h>
#include <time.h>
#include <math.h>
#include "limits.h"
#include "types.h"
#include "engine.c"
#include "score_feed.h"
void feed(unsigned begin, unsigned end);
long long timediff(struct timespec start, struct timespec end);
void print_cpuaffinity();
int msg_batch_size = 10;
int replays = 200;
void execution(t_execution exec) {};
int main() {
print_cpuaffinity();
int raw_feed_len = sizeof(raw_feed)/sizeof(t_order);
int samples = replays * (raw_feed_len/msg_batch_size);
long long late[samples];
struct timespec begin;
struct timespec end;
init();
clock_gettime(CLOCK_MONOTONIC_RAW, &begin);
feed(0, raw_feed_len);
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
printf("total time = %llu\n", timediff(begin, end));
destroy();
}
void feed(unsigned begin, unsigned end) {
int i; for(i = begin; i < end; i++) {
if (raw_feed[i].price == 0) {
cancel(raw_feed[i].size);
} else {
limit(raw_feed[i]);
}
}
}
long long timediff(struct timespec start, struct timespec end) {
struct timespec temp;
if ((end.tv_nsec-start.tv_nsec)<0) {
temp.tv_sec = end.tv_sec-start.tv_sec-1;
temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
} else {
temp.tv_sec = end.tv_sec-start.tv_sec;
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
}
return (temp.tv_sec*1000000000) + temp.tv_nsec;
}
void print_cpuaffinity() {
unsigned long mask = 2;
unsigned int len = sizeof(mask);
if (sched_getaffinity(0, len, &mask) < 0) {
perror("sched_getaffinity");
}
printf("my affinity mask is: %08lx\n", mask);
}