Re: Programmino su linux molto più veloce che su Windows
Inviato: giovedì 27 settembre 2007, 16:49
MA STAI usando lo stesso computer !?! (rotfl)
tipo multiboot ubuntu/XP
ciao
tipo multiboot ubuntu/XP
ciao
Il forum della comunità italiana di Ubuntu.
https://forum.ubuntu-it.org/
Certo!difesaparcosempione ha scritto: MA STAI usando lo stesso computer !?! (rotfl)
tipo multiboot ubuntu/XP
ciao
Ciao!Il programma chiede quale numero n della seguenza di Fibonacci si vuole conoscere.
Es. se n=4 il programma calcolerà il quarto numero della seguenza di fibonacci, cioè 3.
Questo programmino è famoso per la sua lentezza che aumenta esponenzialmente con l'aumentare di n.
Ma ho notato che con Linux il tempi diminuiscono enormemente!!! Shocked
Es. Lo stesso codice compilato su Windows con Dev-C++ con n=30 ci mette 5minuti e 10 secondi, mentre con Linux, compilato con Anjuta, ci mette solo 1minuto e 23 secondi
Codice: Seleziona tutto
def fibonacci(n):
risultato = []
a, b = 0, 1
while b < n:
risultato.append(b)
a, b = b, a+b
return risultato
print fibonacci(100)Infatti se scrivi il programma con il metodo dell'iterazione, è velocissimo....è la ricorsione che rende il sorgente + leggibile a discapito della velocità.Markon ha scritto:Ciao!Il programma chiede quale numero n della seguenza di Fibonacci si vuole conoscere.
Es. se n=4 il programma calcolerà il quarto numero della seguenza di fibonacci, cioè 3.
Questo programmino è famoso per la sua lentezza che aumenta esponenzialmente con l'aumentare di n.
Ma ho notato che con Linux il tempi diminuiscono enormemente!!! Shocked
Es. Lo stesso codice compilato su Windows con Dev-C++ con n=30 ci mette 5minuti e 10 secondi, mentre con Linux, compilato con Anjuta, ci mette solo 1minuto e 23 secondi
Sicuramente c'è qualche errore di programmazione, perchè una funzione fibonacci che calcoli i numeri fino a 30 deve essere scattante.
Guarda, in Python (che da quello che so è più lento di C e C++ ..):ByeCodice: Seleziona tutto
def fibonacci(n): risultato = [] a, b = 0, 1 while b < n: risultato.append(b) a, b = b, a+b return risultato print fibonacci(100)
Scusate se mi ripeto... comunque il problema è quel cout dentro alla funzione FIBONACCI, levalo e sarà velocissimo anche con la ricorsione! Io la penso così, poi vedi te...è la ricorsione che rende il sorgente + leggibile a discapito della velocità.
Il problema non è tanto la velocità della ricorsione in se, ma il fatto che su linux (CON LO STESSO SORGENTE) gira 3 volte + veloce che su windows.gennaro ha scritto:Scusate se mi ripeto... comunque il problema è quel cout dentro alla funzione FIBONACCI, levalo e sarà velocissimo anche con la ricorsione! Io la penso così, poi vedi te...è la ricorsione che rende il sorgente + leggibile a discapito della velocità.![]()
in effetti però una parte del problema potrebbe essere l'output sullo schermo. Prova a toglierlo.andyoso ha scritto:Il problema non è tanto la velocità della ricorsione in se, ma il fatto che su linux (CON LO STESSO SORGENTE) gira 3 volte + veloce che su windows.gennaro ha scritto:Scusate se mi ripeto... comunque il problema è quel cout dentro alla funzione FIBONACCI, levalo e sarà velocissimo anche con la ricorsione! Io la penso così, poi vedi te...è la ricorsione che rende il sorgente + leggibile a discapito della velocità.![]()
Allora, devi salvare quel codice in un file "NOME.py", e poi lo lanci con il comando:Cosa bisogna fare per far girare quel codice pyton ?
I am a niubbo !
ciao
così faccio il controllo/confronto dei 2 algoritmi ...
Codice: Seleziona tutto
python NOME.pyMa dovrebbe essere un problema anche per linux.....ed invece, anche con il cout, su linux gira più veloce.....Misteri dell'informatica....in effetti però una parte del problema potrebbe essere l'output sullo schermo. Prova a toglierlo.
Sì ma è possibile che il terminale sia più veloce che il cmd di Windows e questo può influire.andyoso ha scritto:Ma dovrebbe essere un problema anche per linux.....ed invece, anche con il cout, su linux gira più veloce.....Misteri dell'informatica....in effetti però una parte del problema potrebbe essere l'output sullo schermo. Prova a toglierlo.
Quoto! Provare non costa nulla...Guiodic ha scritto: Sì però prova a togliere l'output su entrambi i programmi, così facciamo una verifica di quanto pesa questo fattore.