Novità

NUOVO AMBIENTE SCRIPT AREA TECNICA

Rookie

Advanced Member >PLATINUM PLUS<
Buongiorno a tutti! Penso sia molto meglio contare (prima) quanti siano gli oggetti da visualizzare, e poi dopo, si dimensiona il vettore o la matrice e si procede finalmente a scorrere (di nuovo) per popolare vettore o matrice e visualizzare le informazioni ivi memorizzate. Questo si ottine al costo di un piccolo decadimento velocistico, ma il risultato e' sempre corretto e senza i problemi di fare stime alla cieca. Non credo sia necessariamente irrinunciabile visualizzare dinamicamente la costruzione del risultato finale… in modo particolare se non e' gia' noto a priori quali siano le informazioni sulle quali si concentrera' il proprio focus!
 
Ultima modifica:

i legend

Premium Member
Ciao Rookie molto probabilmente
Si parte da qualche milione di righe e poi un filtro farà il taglio.
Il problema è che non si sa.
Una soluzione e fare una stringa il calcolo viene fatto solo una volta si contano i valori e poi si dplitta per ordinare
..
Fare il calcolo 2 volte una per dimensionare e poi rifarlo si impiega più tempo, ma forse ho capito male .
Potresti fare un esempio in pseudo codice?
Buona domenica a tutti.
 

Rookie

Advanced Member >PLATINUM PLUS<
Ciao Rookie molto probabilmente
Si parte da qualche milione di righe e poi un filtro farà il taglio.
Il problema è che non si sa.
Una soluzione e fare una stringa il calcolo viene fatto solo una volta si contano i valori e poi si dplitta per ordinare
..
Fare il calcolo 2 volte una per dimensionare e poi rifarlo si impiega più tempo, ma forse ho capito male .
Potresti fare un esempio in pseudo codice?
Buona domenica a tutti.
In linea generale:
Io non procedo mai a creare un modulo che visualizza quanto rilevo scorrendo i dati. Primo, perche' costa molto tempo visualizzare il log di cio' che avviene (e' utile solo in caso di perniciosi bugs) nel corso dell'elaborazione. E secondo, perche' posso decidere di vedere in modi diversi i dati raccolti, per focalizzare meglio l'oggetto della mia indagine.

Se si tratta di milioni di righe, significa con ogni probabilita' che bisogna conoscere meglio cosa bisogna ottenere. E quindi, bisogna procedere per tentativi agendo sul caso in specie fino a conoscere che cosa vale rappresentare, eliminando il superfluo. Cioe' bisogna avere le idee chiare prima di scrivere il codice, sopratutto quando questo produce milioni di righe di informazioni. Quali di queste sono utili? E quante (quelle utili) possono essere nel caso peggiore?
 
Ultima modifica:

i legend

Premium Member
In effetti visualizzare i dati costa parecchio in termini di tempo.
La progress bar ha un costo molto più basso , è un compromesso . È utile per capire che il programma sta funzionando correttamente e non si è impallato Nel caso di grandi elaborazioni
 

i legend

Premium Member
Esempio banale
Leggi il file
Lanci la tua funzione
E Ottieni i tuoi valori
Rit=x
Ritmax=y
Incr=z
Pres= j
Poi applichi i tuoi filtri
Se la condizione è rispettata
M+=1
Redim preserve aTemp(m)
aTemp(m)= rit&","&ritmax&","&incr&","&pres
Fine se

Ubound( atemp) sarà la dimensione della matrice.
Se non ti dà errore perché troppo grande
Allora potresti dimensionare la tua matrice
Redim aMat ( ubond( atemp), 3) as variant ( se contiene dati non omogenei.

Scorri a temp
dim av as variant
Av= split( atemp(i),",")
Amat(i,0)=av(0)
Amat(i,1)= av(1)
Eccc.....
Ecco pronta la matrice da ordinare.
Lo split costa meno che il calcolo della funzione
Se invece ridimensionare 4 array diversi costa ancora meno non devi neanche fare lo split li scorri e carichi.

Però su questo sanno dire Rookie e LuigiB
 

lotto_tom75

Advanced Premium Member
Good Sunday ☀🙂
Anche io dimensionerei volentieri la matrice dopo che so il numero di colonne analizzate come indicato da rookie ma come posso fare se la matrice in questione va dichiarata globale prima della funzione che genera le colonne? 😱😵🤔 Per quanto riguarda la soluzione vulcaniana alla mcgiver del figlio segreto di Bill Gates chiedo un code di esempio più dettagliato perché io non ci arrivo... 🤕🥴😬

La soluzione del sergente SLDR l'ho provata dichiarando 100k righe nella matrice globale e cercando poi di visualizzare nella list box solo quelle pari al numero di righe effettivamente sviluppate ma per adesso così la list box ricaricata secondo ordinamento voluto resta vuota... 🥶
 
L

LuigiB

Guest
è proprio sbagliato il concetto , non è che uno produce milioni di righe e poi spera di prendere le migliori ordinandole ...
 

lotto_tom75

Advanced Premium Member
è proprio sbagliato il concetto , non è che uno produce milioni di righe e poi spera di prendere le migliori ordinandole ...

No Luigi non mi riferivo a milioni di righe sviluppate... ma come ho scritto alla sola dichiarazione dello spazio richiesto in matrice tipo

Dim matrice(100000, 6)
 

i legend

Premium Member
In pratica o dichiari un aTemp() as string
E poi fai il redim preserve e poi fai lo split della stringa per caricare la tua matrice oppure dichiari 4 vettori
ARit()
ARitMax()
AInc()
APres()
Se la condizione è rispettata
allora M+=1
Redim preserve aRit (m)
arit(m)= rit
Redim preserve aRitMax(m)
Artimax(m) = ritmax
Eccc...
Ma non so quale sia la soluzione più veloce e meno costosa in termini di risorsa per il pc.
Aspettiamo lumi.
Ma sono soluzioni home made
Vediamo come sono quelle pro .
 
L

LuigiB

Guest
la soluzione di legend ha un costo enorme oltre al fatto che con gli array, multidimensionali non funziona , tra l'altro quando si fa un preserve e si prevedono di aggiungere piu righe non è che si incrementa di una sola unità l'array ..cosi uno deve fare il preserve per ogni nuovo valore , una volta superato il limite della dimensione messa all'inizio ,e il preserve è un 'istruzione pesante.
La soluzione potrebbe essere quelal di crearsi un proprio udt , prevedere un array di 100 elementi e durante l'elaborazione alimentare questo array in modo che i valor piu alti si trovino sempre in cima e ordinati dentro questo array , in altre parole bisogna abbandonare i sughi pronti barilla (ordine matrice) e preparare la pietanza da soli ...
 

i legend

Premium Member
Luigi ma anche fare il preserve di una stringa costa tanto?
Non immaginavo.
Una volta popolato con 100 elementi la matrice bisogna ordinarla
E a ogni nuovo valore se è maggiore dell ultimo bisogna inserire questo è fare il riordino Dei 100 elementi.?

Grazie LuigiB.
La soluzione migliore è fare un buon filtro alla base., in modo da avere meno ordinamenti da fare.
 
L

LuigiB

Guest
Luigi ma anche fare il preserve di una stringa costa tanto?
Non immaginavo.
Una volta popolato con 100 elementi la matrice bisogna ordinarla
E a ogni nuovo valore se è maggiore dell ultimo bisogna inserire questo è fare il riordino Dei 100 elementi.?

Grazie LuigiB.
La soluzione migliore è fare un buon filtro alla base., in modo da avere meno ordinamenti da fare.
stringhe .. peggio che andar di notte come si dce ...
ad ogni nuovo valore si deve inserire se è il caso questo valore dentro l'array di cui sopra nella giusta posizione facendo shiftare gl ialtri , 100 elementi sono pure troppi .. ne pbastano una ventina ... alal fine delal routine l'array dei risultati è gia ordinato ..
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 26 marzo 2024
    Bari
    30
    51
    17
    01
    53
    Cagliari
    13
    70
    25
    68
    47
    Firenze
    28
    30
    54
    70
    88
    Genova
    67
    87
    22
    03
    62
    Milano
    22
    34
    13
    47
    24
    Napoli
    20
    72
    59
    01
    52
    Palermo
    05
    72
    65
    52
    32
    Roma
    28
    43
    75
    54
    87
    Torino
    16
    08
    17
    24
    38
    Venezia
    67
    28
    55
    60
    29
    Nazionale
    15
    69
    22
    63
    39
    Estrazione Simbolotto
    Firenze
    44
    09
    31
    22
    16

Ultimi Messaggi

Alto