#include <stdio.h>
#include<time.h>
#include<math.h>
#include <unistd.h>
clock_t start,stop;
double duration;
#define MAXK 1e7void computationtime(double start,double stop,int i)
{duration = ((double)(stop-start))/CLOCK_TAI/MAXK;printf("ticks%d = %f\n",i,(double)(stop - start));printf("duration%d = %6.2e\n",i,duration);
}void *fq_memcpy(void *__dest, __const void *__src, size_t __n)
{int i = 0;unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;for (i = __n >> 3; i > 0; i--) {*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;}if (__n & 1 << 2) {*d++ = *s++;*d++ = *s++;*d++ = *s++;*d++ = *s++;}if (__n & 1 << 1) {*d++ = *s++;*d++ = *s++;}if (__n & 1)*d++ = *s++;return __dest;
}void *fq2_memcpy(void *dest, const void *src, size_t n)
{int i;const char *s = src;char *d = dest;for (i = 0; i < n; i++)d[i] = s[i];return dest;
}int main(void)
{char * a = "0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ,0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ";char b[1024];char c[1024];unsigned int i = 0;start = clock();for(i=0;i<10*1024;i++)fq_memcpy(c,a,1024);stop = clock();computationtime(start,stop,1);start = clock();for(i=0;i<10*1024;i++)fq2_memcpy(b,a,1024);stop = clock();computationtime(start,stop,1);return 0;
}