Category: C

  • Linux time difference in nano-second persision

    在 Linux 中算出 nano-second 級時差 當你在需要跟時間差有高精確度的需求的時候,可能會先想到用 gettimeofday 來處理,像是這樣: gettimeofday #include <sys/time.h> struct timeval start, end; gettimeofday(&start, NULL); … gettimeofday(&end, NULL); /* print diff in time */ diff(start, end); 那如果要更高的精確度呢?例如說到 nano-seconds? 就必須要使用 clock_gettime 來處理。 nano-second diff #include <time.h> static long diff_in_ns(struct timespec t1, struct timespec t2) { struct timespec diff; if (t2.tv_nsec-t1.tv_nsec < 0) { diff.tv_sec…

  • 2016-08-08 SSE/AVX instruction set performance

    github: https://github.com/grapherd/sse-avx-instruction-set-performance 今天照著 Performance of SSE and AVX Instruction Sets 看了一遍,然後實作了3個論文中提到的最佳化辦法: * Data Packing* Data Reuse* Asynchronous Data Transfer (prefetch) 把 repo clone 下來之後,可以用 make 產生所有的執行檔。執行 main 可以看三種方式在 native / sse / avx 狀況下的執行速度。