Novità

sviluppo sstemi in vbnet

joe

Advanced Member >PLATINUM PLUS<
Ciao the Legend, 🤞incrocio anch'io le mie dita Confidando in una piu' che proficua visita


Un caro saluto a SLDR concordando che the Legend provando e riprovando (nel suo codificare) conquistera' le sue vette personali!
Ciao a voi


p.s, forse quanto gia' fatto puo' essere ancora validissimo dato che tB e' tuttora "on the way" e il suo sviluppo continua... probabilmente era solo un momento prematuro che tuttavia potrebbe avere ancora una sua ragione d'essere nell'anno che si appropinqua a bussare alle nostre porte!

Hai usato un termine che ho sentito solo 2 volte nella mia vita.

Ha qualcosa di prossimo al "Conte di Carmagnola" ?

:) Scusate la curiosità statistica !
 

Rookie

Advanced Member >PLATINUM PLUS<
Hai usato un termine che ho sentito solo 2 volte nella mia vita.

Ha qualcosa di prossimo al "Conte di Carmagnola" ?

:) Scusate la curiosità statistica !
Ciao Joe, rilevo con piacere la benevolenza che a te Mnemosine concede...
Ergo, pur se incidentalmente l'accezione puo' essere inerita alla prima (in ordine cronologico) delle Opere manzoniane da te citata!
Complimenti :)
 
L

LuigiB

Guest
Ciao a tutti , nuovo aggiornamento

- Verifica vincite sulle estrazioni passate

 

i legend

Premium Member
Buona domenica a tutti.
Facendo i programmini in vb.net mi sa che ho combinato qualcosa,e la dll mi è diventata più lenta.
Ora la ricerca su spaziometria è più veloce.

Ma questo non importa.
Domandona:
Per velocizzare la ricerca sulle cinquine Integrali, ho studiato i thread( quello che ho trovato in rete, poco e confuso)
Ho diviso l integrale in più parti , (4)
In pratica 1 per i 4 core.
Inizialmente funzionava( su ruote unite) , ora mi da risultati a caso sempre diversi.
Non capisco perché.
Da quello che ho capito i thread sono stati sviluppati per emulare i puntatori come in c è c++
Ogni thread esegue lo stessa ricerca su blocchi differenti contemporaneamente.
Una scheggia sul vero senso della parola.
Ma perché l output non è corretto?
Sicuramente non è per via del controllo , perché anche caricando un vettore l output è identico.
Spero di essermi spiegato.
Scusa se insisto, ma vorrei capire dove sbaglio.

Per i controlli ho usato il metodo invoke
Così si può fare? Oppure per datagridview non funziona?
Forse non è sufficiente.?

Se invece , non sono codici che utilizzi sul lavoro e non li hai approfonditi , mi potresti suggerire un testo , buono e semplice su cui studiare?

Per leggere i file ho usato streamreader e readline
sono riuscito a capire anche quando finiscono i thread di lavorare per scrivere il testo in output e non di volta in volta.?Sul mio pc posso utilizzare sino ad otto thread.

Se trovi il tempo potresti fare un esempio con 2 thread?

Questa cosa dei puntatori è fantastica.
Beati voi che avete questa genialità, vi stimo fratelli.😁👍
 

i legend

Premium Member
Altra domanda per il prof
vorrei fare dei controlli utenti per non riscrivere il codice di volta in volta ogni volta ( rendo l idea :ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO:?)
posto l immagine di un progetto che ho iniziato
i controlli utenti sono RangeAnalisi eSelezionaRuota e selezioneFormazione
con la possibilita di passargli gia i dati
esempio
a range analisi passare inizio archivio e fine archivio e la gestione errori se per esempio data ini è > di dataFin
in pratica se la textBox -> nConc<0 allora ritorna un valore che mi disabilita il tasto elabora
e cosi per gli altri gruppi
per le ruote :
se non ci sono ruote selezionate e non si stabilisce se ruote unite o separate non si abilita il pulsante elabora
stesso discorso per il gruppo formazione

per non scrivere subito a video ,
quando tutti i label con i due punti diventano verdi si abilita il tasto mostra che popola i dati raccolti
si potrebbe fare un esempio semplice semplice, basterebbero anche un groupbox con tre elementi e capire come collegargli dei dati ?
non cerco la pappa pronta ma ci sto sbattendo da un po' , ci penso anche quando sono a letto , che stare seduto non è piacevole.
Questo progettino sfruttava i thread , ma da risultati sbagliati.
se non è possibiole grazie ugualmente :)(y)
UI.png
 
L

LuigiB

Guest
Buona domenica a tutti.
Facendo i programmini in vb.net mi sa che ho combinato qualcosa,e la dll mi è diventata più lenta.
Ora la ricerca su spaziometria è più veloce.

Ma questo non importa.
Domandona:
Per velocizzare la ricerca sulle cinquine Integrali, ho studiato i thread( quello che ho trovato in rete, poco e confuso)
Ho diviso l integrale in più parti , (4)
In pratica 1 per i 4 core.
Inizialmente funzionava( su ruote unite) , ora mi da risultati a caso sempre diversi.
Non capisco perché.
Da quello che ho capito i thread sono stati sviluppati per emulare i puntatori come in c è c++
Ogni thread esegue lo stessa ricerca su blocchi differenti contemporaneamente.
Una scheggia sul vero senso della parola.
Ma perché l output non è corretto?
Sicuramente non è per via del controllo , perché anche caricando un vettore l output è identico.
Spero di essermi spiegato.
Scusa se insisto, ma vorrei capire dove sbaglio.

Per i controlli ho usato il metodo invoke
Così si può fare? Oppure per datagridview non funziona?
Forse non è sufficiente.?

Se invece , non sono codici che utilizzi sul lavoro e non li hai approfonditi , mi potresti suggerire un testo , buono e semplice su cui studiare?

Per leggere i file ho usato streamreader e readline
sono riuscito a capire anche quando finiscono i thread di lavorare per scrivere il testo in output e non di volta in volta.?Sul mio pc posso utilizzare sino ad otto thread.

Se trovi il tempo potresti fare un esempio con 2 thread?

Questa cosa dei puntatori è fantastica.
Beati voi che avete questa genialità, vi stimo fratelli.😁👍


Legend ,se prima funzionava è ovvio che hai modificato qualche cosa che ha compromesso il funzionamento precedente, il fatto che fai una differenza tra ruote unite e separate mi da l'impressione che ci sia un po' di confusione non capisco perche sia necessario specificarlo
che ithread siano stati svilupapti per emulare i puntatori non so dove lo hai letto, se da risultati a caso è probabile che thread differenti accedano alle sesse variabili senza aver implementato i metodi di protezione , alla data grid passi una datatable e si alimenta da sola,
come avrai notato il web è pieno di fonti e di esempi , pero devi partire dalle basi ho l'impressione che tu sia partito in quinta ..
 

i legend

Premium Member
Come sempre🙂👍
Proverò a rinominarli differentemente.
Ho fatto copia incolla e cambiavo solo l ndirizzo di dove prendere i file.

Ruote separate faccio il ciclo dell array che contiene le ruote e faccio la statistica
Se unite non ciclo e gli passo direttamente l array.

Sui metodi di protezione non ho letto niente,
Ho utilizzato invoke .
Tu ci hai provato a utilizzare piu thread ?
Credo che 4 thread dovrebbero essere su qualsiasi PC oggi giorno.
 
L

LuigiB

Guest
eccoti un esempio di come l'ho implemetato io , molto semplice sviluppa solo in cinquine col classico metodo dei cicli for nidificati , cosa che in un programma degno di tale nome va evitata come la peste , cerca la cinquina piu ritardata per ambo su ruote a scelta

rimuovere l'estensione .txt e usare sevenzip per scompattare
 

Allegati

  • TestMultiThread.7z.txt
    549,4 KB · Visite: 39

i legend

Premium Member
Non ho trovato da nessuna parte un codice così evoluto.
E non hai utilizzato neanche la dll
Nonostante ho cambiato le ruote mi restituisce sempre lo stesso ritardo max .
Mai visto qualcosa di così assurdamente veloce.
E avevi detto che non funzionava.
Io ho usato otto thread ed ho messo al massimo il numero di colonne.
Spero di capire questo codice in un mese.
Grazie .
Sei un FENOMENO 👍
 
L

LuigiB

Guest
si ho scordato di azzerare la variabile che essendo globale rimaneva sporca , comunque a me con un thread solo va piu veloche che con qualsiasi altro numero di thread.

1701036056206.png
 
L

LuigiB

Guest
altra ottimizzazione anche se è solo un esempio è qualla durante lo sviluppo , , attualmente assegna all'array aN() le 5 posizioni dentro il ciclo k5 , invece si dovrebbe assegnare an(x) ad ogni ciclo for .. non so se mi sono spiegato .. vediamo se hai capito ...
 

i legend

Premium Member
Ok faro le prove , ho notato che aumentando il numero di colonne va più veloce.
Secondo me è super veloce anche prendendo il ritardo massimo e le presenze .
Io invece facevo leggere i file ad ogni thread e ognuno leggeva lo stesso numero di colonne contemporaneamente.
Insomma proprio qualcosa di inguardabile.
Avevo lo stesso script ripetuto più volte . Con la stessa variabile.
Che brutto codice che avevo scritto.
Grazie ancora.
Il tuo codice è super elegante, se mi passi il termine.
 
L

LuigiB

Guest
Ok faro le prove , ho notato che aumentando il numero di colonne va più veloce.
Secondo me è super veloce anche prendendo il ritardo massimo e le presenze .
Io invece facevo leggere i file ad ogni thread e ognuno leggeva lo stesso numero di colonne contemporaneamente.
Insomma proprio qualcosa di inguardabile.
Avevo lo stesso script ripetuto più volte . Con la stessa variabile.
Che brutto codice che avevo scritto.
Grazie ancora.
Il tuo codice è super elegante, se mi passi il termine.
se calcoli il ritardo puoi andare a ritroso sulle estrazioni ed uscire appena lo trovi , se invece devi ccalcolare ritardo massimo e presenze devi scorrere trutte le estrazioni per ogni cinquina.
Aumentando il numero di colonne gestite dal singolo blocco ovviamente si riduce il numero di volte che deve creare threads per analizzare i blocchi e le conseguenti risorse impiegate hanno meno impatto.
 

Rookie

Advanced Member >PLATINUM PLUS<
ogni volta che ci ho provato le prestazioni sono sempre peggiorate , infatti ..

Vedi l'allegato 2272695
Ciao Luigi, posso chiederti quale testo (il titolo o altro riferimento) contiene questa pagina? In linea generale non sono molto d'accordo che i threads possano essere deleteri nei tentativi di ridurre il tempo di computazione. La pagina che hai postato, sembra afferire al framework .Net (ergo mondo windows) che notoriamente non ha una "vera" implementazione dei Threads, come l'ha sempre avuta Unix (cfr. POSIX Threads e relativo file header "pthread.h" per il C...), come li ha anche Linux in quanto suo diretto discendente, come li hanno anche sistemi su di essi basati (SO *nix like) come FreeBSD, NetBSD, OpenBSD, Mac OS X, et cetera.

Comunque, Scetticismo tecnico a parte (mi piacerebbe leggere questo libro che hai citato...) dovuto al fatto che giganti come IBM, INTEL, AMD & others Silicon Companies, che moltiplicano costantemente i cores che possono stipare nei loro wafers grazie alla tecnologia che permette di diminuire lo spazio tra gli elementi di cui i processori sono composti (cfr. TSMC, SAMSUNG, INTEL e altre fonderie) che al momento e' dell'ordine dei 2-3 nanometri, questo implica che lo sviluppo e la produzione di tali processori costi decine di miliardi di dollari... Non credo assolutamente che questi giganti gettino via i loro denari SOLO per far bella figura nella corsa a chi stipa piu' cores dentro ai wafers!!!

Il mondo scientifico, accademico, il settore HPC et cetera, con i linguaggi Fortran e C ha da sempre tratto importanti risultati nel parallelizzare il codice (parallelizabile) rispetto ai tempi di elaborazione, proprio attraverso l'uso dei threads...
 
Ultima modifica:
L

LuigiB

Guest
ciao Rookie , qui si parla specificamente del DotNet, questo è uno dei tanti appunti che ho catalogato durante le mie ricerche , da dove proviene non ricordo , non credo sia un testo, piu probabile qualche risposta che ho trovato interessante su stack overflow o simili , mi sembrava utile farla leggere a legend
Dalla mia esperienza pratica risulta tutto confermato , nel mondo accademico windows si usa poco che io sapppia , non sono un accademico in effetti :) . Il collo di bottiglia sta nell'accesso alla memoria , finche le operazioni si svolgono tutte nel processore e nella sua cache avere più core aumenta la potenza di calcolo ovviamente.
Il problema della velocità come abbiamo sempre detto (mi rivolgo a Legend) si affronta prima di tutto con un buoon algoritmo , secondo poi con un linguaggio compilato (che non è il dot net) , terzo poi con architetture dedicate .
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 07 maggio 2024
    Bari
    68
    80
    23
    56
    71
    Cagliari
    43
    74
    20
    02
    11
    Firenze
    75
    19
    18
    74
    69
    Genova
    45
    38
    26
    16
    87
    Milano
    06
    23
    72
    66
    05
    Napoli
    46
    21
    49
    80
    73
    Palermo
    15
    09
    54
    48
    49
    Roma
    06
    58
    78
    27
    31
    Torino
    78
    27
    31
    64
    74
    Venezia
    60
    47
    90
    06
    22
    Nazionale
    43
    58
    26
    18
    79
    Estrazione Simbolotto
    Milano
    17
    16
    25
    23
    43
Alto