Creare un benchmark con Visual Basic

Applicazioni desktop con Visual Basic 6
Impara a creare applicazioni gestionali col Visual Basic

Scritto da Luca Ruggiero nella sezione Visual Basic

Concesso in esclusiva a MrWebmaster.it - E' vietata la pubblicazione senza espresso consenso del proprietario

Oggi mi sono trovato ad avere a che fare con dei clienti che lamentavano dei problemi ai computer che hanno in dotazione, affermando che si riavviavano all'improvviso senza alcuna apparente spiegazione, causando perdite di tempo e danni al lavoro, non permettendo loro di salvare il documento corrente su cui stavano lavorando (se mi stessero a sentire quando dico di salvare in cuntinuazione le modifiche tutto questo non accadrebbe!).

Oltre al bagno in moto che mi sono fatto per raggiungerli (come pioveva stamattina!) ho perso un bel po di tempo a cercare su Internet un programma che testasse la CPU (Central Processing Unit) delle loro macchine, sottoponendole a sovraccarichi continui e perpetui per vedere se il problema si verificava effettivamente. Cercavo un tipo di programma chiamato benchmark che si adopera proprio per testare la CPU e/o altre periferiche, tanto per cercare di capire se il problemapotesse essere la CPU stessa, la scheda madre, l'Hard Disk in stato di coma terminale, o se si tratta semplicemente dell'infelice fornitura di PC scelta!!!

Effettivamente il problema si verificava... su Internet ci arrivavo a stento e dopo qualche vana ricerca... booom! il computer si riavviava da se :-(

A mali estremi si contrappongono sempre estremi rimedi... il benchmark me lo sono scritto da me in Visual Basic :-)

In effetti non si tratta di nulla di complicato, dato che in genere il senso di una programmazione ottimale è quello di avere un minimo di pietà per la CPU ed evitare carichi di lavoro eccessivi, quindi creare un programma che faccia da benchmark infondo non è difficile, è sufficiente non saper programmare :D scherzo!

Alla fine definisco questo Articolo più sistemistico che non volto prettamente allo sviluppo. Capiamo quindi un attimo come lavora la CPU e come controllarne lo stato. I processi della CPU sono visualizzabili semplicemente accedendo al Task Manager (raggiungibile con la pressione dei tasti Ctrl + Alt + Canc) nella scheda Prestazioni, descritta nell'immagine che segue:



Lo stato dei processi della CPU è evidenziato in rosso. Come vedete sul mio computer portatile (vabbè che è un IBM) lo stato medio della CPU, quando non la stresso troppo e di conseguenza mi stresso anch'io, si aggira intorno al 3%, numeretto in più e non in meno.

Lo scopo del programma che ho creato, che condivido volentieri con voi, è quello di tenere oltremodo occupata la CPU, eseguendo calcoli complessi in virgola mobile (non c'è niente che un processore odi di più al mondo) stabilendo un timer di circa 3 millesimi di secondo tra un calcolo e l'altro. Una volta creato e compilato il programma è sufficiente avviarlo (meglio se esplicitamente con un bottone e prevedere un bottone di stop) e verificare che nell'arco di 5 o 6 ore il computer non si riavvii, non si impalli o non dia alcun segno di squilibri da psicopatico.

Eviterei comunque di effettuare troppe prove, dato che finireste per distruggerla voi la CPU a lungo andare! Ed è anche ovvio che non mi assumo alcuna responsabilità di eventuali danni che potreste creare!..

Veniamo al dunque. Aprite la vostra copia di Visual Basic e create un nuovo EXE. Piazzateci su due bottoni e chiamateli rispettivamente cmdAvvia e cmdAnnulla con Caption Avvia e Annulla natutalmente. Piazzateci poi su un bell'oggetto Timer (lo trovate nella barra generale dei controlli sulla sinistra, a forma di orologio) e chiamatelo tmpControllo. La form dovrebbe assumere, più o meno, il seguente aspetto:



Tenendo selezionato il Timer modificate il valore della proprietà Interval (nel menu sulla destra) a 3, dove 1000 sta per un secondo, quindi 3 sta per 3 millesimi di secondo. Fate poi un bel doppio click sul Timer ed inserite nella Sub il seguente codice:

Private Sub tmpControllo_Timer()
    Dim a As Double
    Dim b As Double
    Dim c As Double
    Randomize
    a = (1 + Rnd(1234567890)) * 1234567890
    b = (1 + Rnd(1234567890)) * 1234567890
    c = (a / b) + c
End Sub
I bottoni di avvio e di chiusura (i cui codici seguono in progressione) si limitano ad avviare ed a fermare il Timer:
Private Sub cmdAvvia_Click()
    tmpControllo.Enabled = True
End Sub
Private Sub cmdAnnulla_Click()
    tmpControllo.Enabled = False
End Sub
Fatene buon uso!

I più cliccati della sezione Visual Basic

:: Guida a Visual Basic 6 (177.800)

:: Una rubrica in VB e Ms Access (98.452)

:: Richiamare una form da un'altra form in Visual Basic (25.004)

:: Interazione tra Visual Basic ed MS Excel (22.438)

:: Una semplice calcolatrice in VB 6 (22.430)

:: Leggere un file Xml col DOM in VB 6 (22.121)

:: Inviare email con CDO in Visual Basic 6 (21.549)

:: Un visualizzatore di immagini in VB 6 (14.546)

:: Un semplice sistema di Login in VB 6 (12.881)

:: Scrivere un file MS Word in VB6 (12.597)

IN EVIDENZA
DOWNLOAD