Autore Topic: Processo Task/Multi-thread  (Letto 386 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Processo Task/Multi-thread
« Risposta #1 il: 20 Ottobre 2019, 14:59:17 »
Lo stesso calcolo eseguito senza e con Fast:
Codice: [Seleziona]
'Fast

Public Sub Main()

  Dim StartTime As Float
  Dim DiffTime As Float

  StartTime = Timer
  For c As Byte = 1 To 40
    For i As Integer = 0 To 200000000
     
    Next
    Print "Operazione "; c; " terminata"
  Next
  DiffTime = Timer - StartTime
  Print "Tempo impiegato "; DiffTime; " sec"

End

Senza Fast naturalmente ottego lo stesso risultato (circa 1 minuto) che con 1 thread, ma con Fast ottengo 3 secondi in meno (8 invece di 11) che se uso tutti i thread

 :ciao:
« Ultima modifica: 20 Ottobre 2019, 15:04:28 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re:Processo Task/Multi-thread
« Risposta #2 il: 24 Ottobre 2019, 23:31:45 »
'petta un attimo, ho provato il tuo listato sul mio Athlon64X2 2,9 ghz, senza Fast lo esegue in 169.45599341 secondi, con Fast invece in 0.000117053999929 secondi. :o
C'è qualquadra che non cosa...  ??? :-\ :mad:
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Processo Task/Multi-thread
« Risposta #3 il: 25 Ottobre 2019, 12:09:58 »
L'avevo notato anch'io, ma se fai il test con Fast per primo, intendo a programma riavviato dopo aver fatto girare un altro programma con calcoli diversi magari su stringhe o date, vedi che il tempo si allunga un pochino.
Funzionare funziona basta provare questo codice:

Codice: [Seleziona]
Fast

Public Sub Main()

  Dim StartTime As Float
  Dim DiffTime As Float

  StartTime = Timer
  For c As Byte = 1 To 40
    For i As Integer = 0 To 200000000
      i += 1
    Next
    Print "Operazione "; c; " terminata, valore = "; i
  Next
  DiffTime = Timer - StartTime
  Print "Tempo impiegato "; DiffTime; " sec"

End

Del perchè questo accada non saprei dire, forse vuott che conosce il C lo potrebbe sapere...

Codice: [Seleziona]
Prima volta:
...
Operazione 32 terminata, valore = 200000002
Operazione 33 terminata, valore = 200000002
Operazione 34 terminata, valore = 200000002
Operazione 35 terminata, valore = 200000002
Operazione 36 terminata, valore = 200000002
Operazione 37 terminata, valore = 200000002
Operazione 38 terminata, valore = 200000002
Operazione 39 terminata, valore = 200000002
Operazione 40 terminata, valore = 200000002
Tempo impiegato 7,71499999245862E--5 sec

Seconda volta:
...
Operazione 34 terminata, valore = 200000002
Operazione 35 terminata, valore = 200000002
Operazione 36 terminata, valore = 200000002
Operazione 37 terminata, valore = 200000002
Operazione 38 terminata, valore = 200000002
Operazione 39 terminata, valore = 200000002
Operazione 40 terminata, valore = 200000002
Tempo impiegato 0,000122502000067 sec
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro