Pages: 1 2 [3] 4 5   Go Down
Print
Author Topic: 4° gara di programmazione  (Read 12822 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #30 on: 22-04-2011, 22:54:51 »

soprattutto bisogna considerare la potenza "bruta" del processore.

SkyWolf la tua config è....?
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« Reply #31 on: 22-04-2011, 23:06:29 »

Scusate la domanda protrebbe risultare stupida ma non capisco una cosa:

come è possibile che sull'input standard (quello dato dal prof) il mio programma ci sta in media 55ms mentre con lo stesso input moltiplicato per 10 ci sta in media 150ms??
Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #32 on: 23-04-2011, 01:19:11 »

Ma se soltanto per copiare le matrici dal file di input a matrice[][] impiega più tempo..
~20ms calcolato con questo?
Code:
double inizio = System.currentTimeMillis();
//
// programma di cui calcolare il tempo d'esecuzione
//
System.out.println((System.currentTimeMillis() - inizio) + "ms");

- In genere per copiare quella quantità di matrici ci vogliono: ~60ms
- Per la scrittura di 1.000 righe, quindi 1.000 risultati ci vogliono: ~30ms (calcolato con BufferedWriter)
- Per calcolare la via ovviamente in base al metodo utilizzato il tempo varia

In totale sforiamo minimo i ~100ms

Ma perchè parli di tempi in modo così generico?
Secondo te perchè ho chiesto a R3m la configurazione hardware con cui faceva 20ms? xD perchè a seconda della configurazione, della versione di Java, dei processi aperti, e chissà rispetto a quante altre variabili, i tempi di esecuzione variano in modo sensibile.

Sul tuo PC per copiare quella quantità di matrici ci metti 60ms, io sul mio appena 9, per esempio.
Beh questo è anche vero, ma io parlo in media.. [Emoticon] Asd
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #33 on: 23-04-2011, 01:22:42 »

Scusate la domanda protrebbe risultare stupida ma non capisco una cosa:

come è possibile che sull'input standard (quello dato dal prof) il mio programma ci sta in media 55ms mentre con lo stesso input moltiplicato per 10 ci sta in media 150ms??
Provo a spararla...forse perchè ricalcola le stesse cose?  boh
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
SkyWolf
Matricola
*
Offline Offline

Gender: Male
Posts: 90



« Reply #34 on: 23-04-2011, 07:20:18 »

Scusate la domanda protrebbe risultare stupida ma non capisco una cosa:

come è possibile che sull'input standard (quello dato dal prof) il mio programma ci sta in media 55ms mentre con lo stesso input moltiplicato per 10 ci sta in media 150ms??

Al "raddoppiare" dell'input non per forza "raddoppia" il tempo d'esecuzione.
Mettiamo che (ad esempio) la chiusura dei buffer pesi un tot in percentuale, sul tempo d'esecuzione del programma, all'aumentare dell'input, la chiusura dei buffer avrà un peso MOLTO minore in percentuale.
E così per molte altre cose probabilmente, vedi dichiarazioni di variabili, eccetera.


soprattutto bisogna considerare la potenza "bruta" del processore.

SkyWolf la tua config è....?

Q9550 @ 2~2.86 GHz (si adatta automaticamente variando il moltiplicatore a seconda del carico, con solo Java si mantiene a 2 GHz) con 4GB di ram a 1333.

Comunque almeno con la versione di Java che ho installato io (ammetto che la dovrei aggiornare xD perchè è da un bel pezzo che vegeta lì) è completamente inutile avere un Quad Core sotto la scocca:
Link Immagine
( effetti di un while(true); )
Logged

Danilo Catalano.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #35 on: 23-04-2011, 10:25:35 »

il prof mette un input piu grande
Logged

Aliens Exist
fabryxio
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 343

Chi l'ha duro....... l'ha duro!


WWW
« Reply #36 on: 23-04-2011, 10:26:58 »

ma è inutile visionare i tempi tanto c'entrano poco con gli input del prof :S
Logged

R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #37 on: 23-04-2011, 11:31:56 »

In realtà è possibile capire più o meno che tempo darà la prova. Nel mio, per esempio, sò quasi per certo che un tempo di 15/20 ms equivale a circa 200ms nell'input del prof. Chiaramente il valore può cambiare in base all'input che usa lui, però gran parte delle volte ci ha azzeccato (almeno, io sò che devo fare un tempo <= 15ms per avere un ottimo risultato con quello del prof)

@Skywolf, è inutile avere un quad core se il tuo programma non usa i thread...altrimenti nessun programmatore si sarebbe lamentato dell cpu multi-core  yoh in sostanza bisogna adattare il prog a lavorare "dosando" un pezzo del programma per ogni core.
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #38 on: 23-04-2011, 12:38:58 »

Anche se poi ad esempio questo programma viene eseguito da me a ~100ms, mentre nella graduatoria del professore è segnato 202.90ms
Anche perchè la valutazione avviene: "La macchina utilizzata per il calcolo delle prestazioni possiede un Processore Intel Core 2 Duo da 1.66GHz, una memoria da 1 GB e sistema operativo Linux Ubuntu.
Le prestazioni di ogni singola soluzione sono calcolati come media di 100 esecuzioni in modo da ridurre eventuali variazioni dovute al sistema.
" e sopratutto con un diverso file di input!
« Last Edit: 23-04-2011, 13:41:46 by zElOtO » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« Reply #39 on: 23-04-2011, 15:11:44 »

Quote
Al "raddoppiare" dell'input non per forza "raddoppia" il tempo d'esecuzione.
Mettiamo che (ad esempio) la chiusura dei buffer pesi un tot in percentuale, sul tempo d'esecuzione del programma, all'aumentare dell'input, la chiusura dei buffer avrà un peso MOLTO minore in percentuale.
E così per molte altre cose probabilmente, vedi dichiarazioni di variabili, eccetera.

Hai ragione Skywolf. Ho visto il tempo di esecuzione calcolato solo sul pezzo di codice che carica di volta in volta il labirinti  nella matrice (senza trovare il percorso, ne scriverlo sul file) e mi sono reso conto che in pratica l'80% del tempo è impiegato per fare ciò.
Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
fabryxio
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 343

Chi l'ha duro....... l'ha duro!


WWW
« Reply #40 on: 23-04-2011, 16:55:28 »

Stavolta non sto riuscendo a fare st'esercizio 
« Last Edit: 23-04-2011, 17:31:45 by fabryxio » Logged

zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #41 on: 23-04-2011, 19:31:54 »

Stavolta non sto riuscendo a fare st'esercizio 
Per la ricerca del percorso, puoi utilizzare o ricorsione, o stack, o array. Scegli tu 
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
SkyWolf
Matricola
*
Offline Offline

Gender: Male
Posts: 90



« Reply #42 on: 23-04-2011, 23:48:55 »

In realtà è possibile capire più o meno che tempo darà la prova. Nel mio, per esempio, sò quasi per certo che un tempo di 15/20 ms equivale a circa 200ms nell'input del prof. Chiaramente il valore può cambiare in base all'input che usa lui, però gran parte delle volte ci ha azzeccato (almeno, io sò che devo fare un tempo <= 15ms per avere un ottimo risultato con quello del prof)

@Skywolf, è inutile avere un quad core se il tuo programma non usa i thread...altrimenti nessun programmatore si sarebbe lamentato dell cpu multi-core  yoh in sostanza bisogna adattare il prog a lavorare "dosando" un pezzo del programma per ogni core.

Il processo java.exe dovrebbe comprendere tutta la JVM, di conseguenza ci troviamo davanti a gestore dello heap, gestore dello stack, interprete delle classi, garbage collector e chissà quanta altra fuffa.
Il fatto che il MIO programma non preveda l'utilizzo del multiprocessore, non significa che java non possa già farne uso di suo (cosa evidentemente sconfessata dallo screenshot che ho messo stamattina). Tongue
Logged

Danilo Catalano.
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #43 on: 24-04-2011, 10:36:59 »

in effetti è vero...però non credo che possa effettivamente usarlo...almeno credo che sarebbe quasi impossibile riuscire a gestire un programma lineare con più core...poi magari effettivamente è possibile  boh
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #44 on: 24-04-2011, 13:22:37 »

Secondo voi le dimensioni delle matrici di input supereranno la dimensione massima 20x20?
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Pages: 1 2 [3] 4 5   Go Up
Print
Jump to: