Hallo,
Ich multipliziere 40 Mil Vektoren mit einer Matrix. Initialisiere die Matrix, die Vektoren und führe die Multiplikation inklusive Zeit-Messung aus.
Code
const int size = 40000000;
vec4 * vertices;
vertices = new vec4[size];
mat4 transform = mat4(1.0f);
float mod = 0.0f;
for (int i=0; i<size; i++) {
vertices[i] = vec4(1.0f+mod, 1.0f-mod, 1.0f, 1.0f);
mod += 0.001f;
}
//transform = mat4(1.0f); //uncomment to increase performance
cout << "Starting GLM multiplication..." << endl;
time_t t = clock();
for (int j=0; j<1; j++) {
for (int i=0; i<size; i++) {
vertices[i] = transform * vertices[i];
}
}
float total = (float)(clock()-t)/CLOCKS_PER_SEC;
cout << "End: " << total << endl;
Alles anzeigen
Jemand eine Idee warum die Performance steigt wenn ich die auskommentierte Zeile einkommentiere? Ich verwende GLM.
Performance mit Zeile: ~170ms
Performance ohne Zeile: ~265ms
vgl in Java:
optimierte Version: ~223ms
mit lwjgl.util: ~330ms
edit: (die optimierte Java Version in 1:1 C++ kommt im Übrigen auf ca 190ms)