c++ - strings - guitar tuner



Prestazioni lente di AddString in MFC (1)

Ho una finestra di dialogo con diverse caselle combinate di grandi dimensioni (forse diverse centinaia di elementi a testa). C'è un notevole ritardo nella costruzione mentre questi sono popolati (ha confermato che sono profilati).

Il mio pensiero iniziale era che l'ordinamento stava uccidendo le sue prestazioni, ma disabilitare l'ordinamento e usare InsertString invece non sembra rendere le cose molto migliori. Non pensavo che sembrasse un numero eccessivo di elementi - c'è qualcos'altro che dovrei fare o considerare qui?

Le chiamate MFC sono involucri banali per le chiamate ai messaggi Win32, quindi non penso che ci sia un sovraccarico significativo lì.

DUPLICATO Come caricare una vasta gamma di stringhe in un controllo combobox MFC il più veloce possibile?


Dovresti utilizzare CWnd :: SetRedraw attorno agli add, per impedire al controllo di aggiornare tutto il suo stato interno dopo ogni aggiunta.

Se non lo stai già facendo, allora fai questo:

combo.SetRedraw(FALSE);

...  All the adds

combo.SetRedraw(TRUE);
combo.Invalidate();

Si dovrebbe inoltre considerare l'utilizzo della funzione CComboBox :: InitStorage , che prealloca la memoria per la casella combinata.





mfc