Witam, mam problem z zasobożernym programem. Podczas odczytywania danych zużywa sporo mocy obliczeniowej procesora. Testowałem na słabszym sprzęcie, Core 2 Duo( T5500) czyli 2x1.66, 2gb ram ddr2, ale pamięć operacyjna nie jest tu chyba istotna, sytem windows xp 32bit. Przeważnie zużycie procesora podczas odczytu to 60%, wydaje mi się to trochę za dużo, jak na tak prosty program. Gdzie popełniłem błąd? Program ma mieć określoną przestrzeń na przechowywanie danych (wątek główny rysuje je na wykresie), potem dane są usuwane i dokładane nowe na wektorze.
Program napisany w Qt, kompilator MiniGW32.
void PortReader::readData()
{
if(status==true){
r_data = port->readAll();
port_buffor_size = r_data.size();
qDebug() << "port_buffor_size: " << port_buffor_size;
for(int j=0;port_buffor_size > j;j++){
odebraneDane->push_back(r_data.data()[j]);
qDebug() << "r_data.data()[j]" << r_data.data()[j];
}
}
//Jeśli wielkość wektora przekroczy maksimum setSizeArry
if(odebraneDane->size() > portArrySize){
while(odebraneDane->size() > portArrySize){
odebraneDane->removeFirst(); //usuń pierwszy element wektora
}
emit odebranoDane();
}
else{
qDebug() << "Przychodzą dane, ale czekam.";
}
}