V
#define sizearr 10 * 1024 * 1024 //Oh, keine Klammern, kein const int
struct DATAFast // Ist 8 Byte groß. Es können 8 in den L1 Cache gleichzeitig geladen werden
//Ah, C
//Ach, der L1 ist doch Wurst
{
int a;
int b;
};
for (register unsigned int i = 0; i < sizearr; ++i)//register?
//musst du alte Bücher haben!
//wo ist das loop unrolling, sagern wir mal mit 8?
void main()//nu lass aber mal gut sein mit der Geschichtsstunde.
{
int c = 0;
for (int i = 0; i < 1000; ++i)
{
QueryPerformanceCounter(&startFaster1[i]);
int a = Faster1();
QueryPerformanceCounter(&endeFaster1[i]);
c++;
}
//schockschwerenot, so misst man also 1000 mal und nimmt das letzte ergebnis
//zum ausgleich multipliziert man es mit 1000 und teilt es mit 1000.
//ich weiß einen trick, wie man diese schleife beschleunigen könnte.
__int64 difffaster3 = 0;//wirre 3
for (int i = 0; i < 1000; ++i)
{
difffaster1 += endeFaster1[i].QuadPart - startFaster1[i].QuadPart;
}
difffaster1 = difffaster1 / 1000;
}
Vielleicht schauste mal kurz http://techpubs.sgi.com/library/dynaweb_docs/0650/SGI_Developer/books/OrOn2_PfTune/sgi_html/ch06.html#LE27277-PARENT an.