Im Zusammenhang mit der Bewertung der negativen logarithmischen Wahrscheinlichkeiten muss ich eine Reihe von Operationen durchführen, die von der Vektorisierung profitieren könnten
0) for (i = 1...n) { a[i] = 0; } // aber das denke ich
std::fill( a.begin(), a.end(), 0 ) ist bereits optimal
1) for (i = 1...n) { a[i] += b * c[i]; }
2) sum = 0; for (i = 1 .. n) { sum += a[i] * log( b[i] / c ); }
wissen Sie, ob es irgendeine Hoffnung gibt, gcc 434 dazu zu bringen Auto-Vektorisierung, und wie sollte ich die Schleife codieren, um ihm zu helfen (z.B. Indizes vs. Iteratoren verwenden, sollte ich (2) in einfachere Schleifen aufteilen Schleifen, ...) Bis jetzt verwende ich Doubles, ich muss prüfen, ob ich zumindest für (1) auf Floats umsteigen kann. zumindest für (1).