rendered paste body#include <sys/time.h>
#include <pthread.h>
#include <vector/vector.h>
void try_proc_raw(void)
{
float b[1024];
pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
unsigned int ind;
unsigned int jnd;
for (ind = 0; ind < 1024; ++ind) {
pthread_mutex_lock(&mtx);
for (jnd = 0; jnd < 1024; ++jnd)
b[jnd] *= jnd;
pthread_mutex_unlock(&mtx);
}
}
void try_proc_sse(void)
{
vector_16f buf[64];
float *f;
pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
unsigned int ind;
unsigned int jnd;
f = (float *) buf;
for (ind = 0; ind < 1024; ++ind) {
pthread_mutex_lock(&mtx);
vec_multscNf(buf, (float) jnd, 1024);
pthread_mutex_unlock(&mtx);
}
}
void howlong(const char *fn, void (*func)(void))
{
struct timespec t1;
struct timespec t2;
clock_gettime(CLOCK_REALTIME, &t1);
func();
clock_gettime(CLOCK_REALTIME, &t2);
printf("%s %lu\n", fn, t2.tv_nsec - t1.tv_nsec);
}
int main(void)
{
howlong("try_proc_raw", try_proc_raw);
howlong("try_proc_sse", try_proc_sse);
return 0;
}