da developerwinme » dom dic 04, 2011 5:33 pm
Per cominciare volevo chiederti alcune precisazioni:
SuperRomu ha scritto:Le combinazioni che vengono generate vanno 500.000 a poco meno di 600.000
Combinazioni di cosa?
SuperRomu ha scritto:non vengono mezionati parametri che fanno direttamente capo ad oggetti nel form.
Cosa intendi dire?
Passando al problema, posso darti qualche suggerimento di carattere generale.
1) Il fatto che l'esecuzione contemporanea di più istanze non aumenti in modo considerevole il tempo richiesto mi fa pensare che l'applicazione non sfrutti in modo efficiente i processori multi-core (a proposito, in esecuzione quanto utilizza in termini di processore?), quindi potresti pensare di vedere se è possibile utilizzare la gestione dei thread del .NET Framework per parallelizzare i calcoli e sfruttare appieno i core del processore, con miglioramenti consistenti delle prestazioni.
2) I calcoli con gli array risultano sempre pesanti per la CPU, specie se si parla di matrici a più dimensioni: ove possibile cerca di ottimizzarne e/o limitarne l'uso.
3) Credo che sia già così, comunque te lo faccio notare per sicurezza: il refresh dell'interfaccia grafica durante il calcolo è un'operazione che puoi evitare, effettuandolo al termine delle operazioni, se non rappresenta un problema. A seconda della quantità di refresh della UI che fai, in questo modo potresti guadagnare una buona dose di prestazioni.
4) Numerose chiamate a subroutine, specie se i parametri sono passati ByVal e non ByRef, possono richiedere molto tempo, perché lo stack si riempe e si svuota molte volte: dove possibile potresti cercare di eliminarle (perdendo ovviamente in flessibilità e leggibilità del codice).
5) Se non riesci a migliorare le prestazioni neanche così, potresti pensare di riscrivere il programma in un linguaggio non gestito, come il C++, anche se la cosa potrebbe richiedere molto tempo.
Se hai bisogno di altro resto a disposizione.
PC: ASUS X53S (Intel Core i7-2670QM 2.20 Ghz, RAM 8 GB, NVIDIA GeForce GT520MX, Windows 8 Pro)
Mobile: Nokia Lumia 710 (CPU 1,4 Ghz, RAM 512 MB, Windows Phone 7.8)
--
developerwinme.wordpress.com