Robię takie coś:
void copy(double *d, double *s, int n)
{
for(int i = 0; i < n/4; i+=4)
{
d[i+0] = s[i+0];
d[i+1] = s[i+1];
d[i+2] = s[i+2];
d[i+3] = s[i+3];
}
}
#define N 0x1000000; // 16 MB
double *p = new double[2*N]; // 16 x 16 MB
for(int i = 0; i < 2*N; i+=2)
{
p[i] = randf(); // jakieś losowe liczby - tak dla rozrywki...
p[i+1] = randf();
}
int t = timer(); // czas w ms
copy(p, p+N, N)
t = timer() - t;
// szybkość w MB/s
int mps = N * 0.016 / t; // 16 = 2x8B
i co to właściwie mierzy?
Mi z tego wychodzi ponad 20000, czyli szybkość ponad 20 GB/s !!!
co jest raczej niemożliwe, bo DDR3 1600MHz ma przepustowość tylko 12GB/s;
w dual mode 24 teoretycznie, no ale to przecież podwójnie nigdy nie pójdzie...
może w wersji wielowątkowej jedynie... choć i w to wątpię.