
#programowanie #qt #cpp
Pytanie do programistów Qt i w sumie nie tylko.
Potrzebujemy w Qt pojemnika do przechowywania dużych ilości próbek typu double. Mówimy tutaj o ilościach próbek przekraczających nawet 4 miliony.
Logika podpowiada, że najlepszy byłby QVector. Bo czym jest QVector? Tablicą z ficzerami. Powinien być pomijalnie wolniejszy i zajmować pomijalnie więcej. Test dla 3kk próbek na prealokowanej pamięci pokazał natomiast, że QVector zajął w pamięci programu 1/3 więcej, zapis do niego był ponad 5x wolniejszy i odczyt z niego był 2,5 krotnie wolniejszy. W porównaniu do zwykłego arraya oczywiście.
To jest w ogóle możliwe, żeby on wypadł tak bardzo źle? Wkradł się jakiś element losowy związany np. ze schedulerem OSu?
Pytanie do programistów Qt i w sumie nie tylko.
Potrzebujemy w Qt pojemnika do przechowywania dużych ilości próbek typu double. Mówimy tutaj o ilościach próbek przekraczających nawet 4 miliony.
Logika podpowiada, że najlepszy byłby QVector. Bo czym jest QVector? Tablicą z ficzerami. Powinien być pomijalnie wolniejszy i zajmować pomijalnie więcej. Test dla 3kk próbek na prealokowanej pamięci pokazał natomiast, że QVector zajął w pamięci programu 1/3 więcej, zapis do niego był ponad 5x wolniejszy i odczyt z niego był 2,5 krotnie wolniejszy. W porównaniu do zwykłego arraya oczywiście.
To jest w ogóle możliwe, żeby on wypadł tak bardzo źle? Wkradł się jakiś element losowy związany np. ze schedulerem OSu?
- Najlepsze
- Wszystkie komentarze






i być może bardziej odpowiednią strukturą będzie
QVarLengthArray.ale i tak raczej nie wrzucałbyś milionów próbek w wykres?
Ciekawostka:
Containers tests BEGIN. Number of samples: 3000000 , iterations: 10
"Array"
Teraz mnie dziwi ile szybsze są QVectory i QArraye od ich pierwowzoru. Jak to jest możliwe w ogóle?
No wychodzi tak ciągle.
Containers tests BEGIN. Number of samples: 10000000 , iterations: 10
"Array" WorkingSetSize used: 157 MB
"Array" PageFile used: 154 MB
"Array" creationTime:
https://www.sendspace.com/file/5wfggd
Jak masz Qt 5.5.1 64 bit i Visual Studio 2013 z kompilatorem MSVC 12.0 amd64, to możesz odpalić z marszu cały projekt.
Containers tests BEGIN. Number of samples: 10000000 , iterations: 40
"Array" WorkingSetSize used: 157 MB
"Array" PageFile used: 154 MB
"Array" creationTime: