Programmino su linux molto più veloce che su Windows

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
andyoso
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 720
Iscrizione: venerdì 20 luglio 2007, 1:17
Località: Napoli

Programmino su linux molto più veloce che su Windows

Messaggio da andyoso »

Ciao a tutti,
Oggi ho fatto una scoperta alquanto piacevole....
Ho fatto un programmino con c++ utilizzando le ricorsioni...
//FIBONACCI con il metodo della ricorsione

#include

using namespace std;



long FIBONACCI (long, int&);



int main()

{

    int conta=0;

    long n, risultato;

    cout";

    cin>>n;

    risultato=FIBONACCI (n, conta);

    cout"<<risultato<<endl;

}



long FIBONACCI (long n, int &conta)

{

    conta++;//conta quante volte FIBONACCI viene eseguito

    cout<<conta<<endl;

    if(n==0 || n==1)

    return n;

    else

    return FIBONACCI (n-1, conta) + FIBONACCI (n-2, conta);

    }
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!!! :o

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

Ma come mai??? non dovrebbe essere lo stesso programma????
Avatar utente
Pappice
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: domenica 11 febbraio 2007, 15:45

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Pappice »

Non vorrei dire fesserie, ma dovrebbe essere diverso il modo in cui il SO gestisce le istruzioni del processore...
...ed ora la parola ai veri esperti!!!  ;D
Dicette 'o pappice 'nfacci' a noce: "Dàmme 'o tiempo ca te spertoso" - (Disse il tarlo alla noce:" Dammi il tempo che ti buco")

"Cosa pensi quando ti guardi allo specchio?" ... "RTFM!!!"
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Guiodic »

Può darsi che la ragione stia nei processi concorrenti con il tuo programma. Probabilmente Windows ha una serie di processi del sistema molto più esosi, in termini di cpu, di Linux che, peraltro, ha anche una migliore gestione del processi stessi.

Detto ciò, la differenza è talmente enorme che davvero non saprei spiegarmela, a meno che su Windows non ci stavi facendo girare qualcosa di davvero pesante.
Peraltro non è neppure una differenza di compilatore perché è lo stesso (g++).
Avatar utente
andyoso
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 720
Iscrizione: venerdì 20 luglio 2007, 1:17
Località: Napoli

Re: Programmino su linux molto più veloce che su Windows

Messaggio da andyoso »

No non stavo eseguendo niente su windows oltre al programma in questione....bhà
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Guiodic »

andyoso ha scritto: No non stavo eseguendo niente su windows oltre al programma in questione....bhà
Non ho windows e non posso fare una verifica. Magari qualcuno che ce l'ha potrebbe provare.
gennaro
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 303
Iscrizione: domenica 16 luglio 2006, 11:13

Re: Programmino su linux molto più veloce che su Windows

Messaggio da gennaro »

Scusa ma perchè farlo con la ricorsione? :D  Magari dico una fesseria ma non è molto più veloce se lo scrivi così??  :-[

Codice: Seleziona tutto

#include <iostream>

using namespace std;


int main() {
    long n, c, a = 0, b = 1;

    cout<<"Inserire il valore n--->";
    cin>>n;

    while (n > 1) {
          c = a;
          a = b;
          b = c+b;
          n--;
    }

    cout<<"Fibonacci("<<n<<") e' uguale a---->"<<b<<endl;

    return 0;

}
Avatar utente
Pappice
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: domenica 11 febbraio 2007, 15:45

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Pappice »

ah, è vero... e anche la priorità del processo potrebbe contare...  :-[
Dicette 'o pappice 'nfacci' a noce: "Dàmme 'o tiempo ca te spertoso" - (Disse il tarlo alla noce:" Dammi il tempo che ti buco")

"Cosa pensi quando ti guardi allo specchio?" ... "RTFM!!!"
Avatar utente
andyoso
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 720
Iscrizione: venerdì 20 luglio 2007, 1:17
Località: Napoli

Re: Programmino su linux molto più veloce che su Windows

Messaggio da andyoso »

gennaro ha scritto: Scusa ma perchè farlo con la ricorsione? :D  Magari dico una fesseria ma non è molto più veloce se lo scrivi così??  :-[

Codice: Seleziona tutto

#include <iostream>

using namespace std;


int main() {
    long n, c, a = 0, b = 1;

    cout<<"Inserire il valore n--->";
    cin>>n;

    while (n > 1) {
          c = a;
          a = b;
          b = c+b;
          n--;
    }

    cout<<"Fibonacci("<<n<<") e' uguale a---->"<<b<<endl;

    return 0;

}
[email][/email]

Lo so, ma questo era un eserczio che mi ha assegnato il mio prof. sulle ricorsioni
gennaro
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 303
Iscrizione: domenica 16 luglio 2006, 11:13

Re: Programmino su linux molto più veloce che su Windows

Messaggio da gennaro »

Ah scusa... però mi sembra strano che  sia così lento... cioè senza la ricorsione e con n = 30 a me impiega meno di un secondo... ed ho anche un processore molto scarso...  :D
Avatar utente
andyoso
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 720
Iscrizione: venerdì 20 luglio 2007, 1:17
Località: Napoli

Re: Programmino su linux molto più veloce che su Windows

Messaggio da andyoso »

gennaro ha scritto: Ah scusa... però mi sembra strano che  sia così lento... cioè senza la ricorsione e con n = 30 a me impiega meno di un secondo... ed ho anche un processore molto scarso...  :D
Perchè con il metodo della iterazione (quello proprosto da gennaro) apre solo una funzione anche se n=30, mentre con il metodo della ricorsione si aprono 2milioni e 7cento funzioni una dentro l'altra che occupano una molta memoria
Avatar utente
Majinga
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 387
Iscrizione: mercoledì 21 febbraio 2007, 20:37

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Majinga »

Non è che lo esegui da dev c++, in quel caso dev potrebbe eseguirtelo in modalità simil-debug, rallentandolo notevolmente.
gennaro
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 303
Iscrizione: domenica 16 luglio 2006, 11:13

Re: Programmino su linux molto più veloce che su Windows

Messaggio da gennaro »

andyoso ha scritto: Perchè con il metodo della iterazione (quello proprosto da gennaro) apre solo una funzione anche se n=30, mentre con il metodo della ricorsione si aprono 2milioni e 7cento funzioni una dentro l'altra che occupano una molta memoria
Guarda magari dico una sciocchezza ma se togli quel

Codice: Seleziona tutto

     cout<<conta<<endl; 
dalla funzione FIBONACCI va moooooolto più veloce! (yes)
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Guiodic »

gennaro ha scritto:
andyoso ha scritto: Perchè con il metodo della iterazione (quello proprosto da gennaro) apre solo una funzione anche se n=30, mentre con il metodo della ricorsione si aprono 2milioni e 7cento funzioni una dentro l'altra che occupano una molta memoria
Guarda magari dico una sciocchezza ma se togli quel

Codice: Seleziona tutto

     cout<<conta<<endl; 
dalla funzione FIBONACCI va moooooolto più veloce! (yes)
scusate ma non è questo il punto... la domanda è un'altra: a parità di sorgente, perché su Win ci mette 5 minuti e su Linux 1 ?
Avatar utente
Pappice
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: domenica 11 febbraio 2007, 15:45

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Pappice »

Beh, ma non 'abbiamo spiegato?
Processi concorrenti, priorità del processo che esegue l'operazione, gestione delle istruzioni del processore...
Dicette 'o pappice 'nfacci' a noce: "Dàmme 'o tiempo ca te spertoso" - (Disse il tarlo alla noce:" Dammi il tempo che ti buco")

"Cosa pensi quando ti guardi allo specchio?" ... "RTFM!!!"
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da difesaparcosempione »

su windows il programma lo attivi da fuori IDE ( direttamente da una finestra DOS/nera) ?

Su winzoz devi generare un exe e poi attivarlo da finestra comandi. ( classico programma console like)
ciao
:)
Ultima modifica di difesaparcosempione il giovedì 27 settembre 2007, 15:01, modificato 1 volta in totale.
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Guiodic »

Pappice ha scritto: Beh, ma non 'abbiamo spiegato?
Processi concorrenti, priorità del processo che esegue l'operazione, gestione delle istruzioni del processore...
Sì, ma è davvero tanta la differenza....
Nessuno può fare una prova compilandolo sia su win  che su Ubuntu, con lo stesso compilatore (g++) ?
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da difesaparcosempione »

Una risposta potrebbe essere anche questa:
Il sw linux di xterm è nettamente più performante dei term cmd di windows.
Se le scritte sono numerose (cout) i cmd di windows sono destinati a perdere in confronto al xterm o addirittura tty.

Una prova da fare sarebbe quella di togliere le cout del contatore e mettere data e ora di fine - inizio programma.
Probabilmente così winzoz guadagnerà qualcosa. ( se si parla di identico hw )
Avatar utente
Pappice
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: domenica 11 febbraio 2007, 15:45

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Pappice »

Non c'è un modo di conteggiare i... come si chiamano... i cicli di CPU consumati dal software sia sotto win sia sotto lin?
Così ci togliamo qualche dubbio...
Dicette 'o pappice 'nfacci' a noce: "Dàmme 'o tiempo ca te spertoso" - (Disse il tarlo alla noce:" Dammi il tempo che ti buco")

"Cosa pensi quando ti guardi allo specchio?" ... "RTFM!!!"
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Guiodic »

Pappice ha scritto: Non c'è un modo di conteggiare i... come si chiamano... i cicli di CPU consumati dal software sia sotto win sia sotto lin?
Così ci togliamo qualche dubbio...
Vabe' ma quelli potrebbero essere tranquillamente gli stessi, o differire di poco.
In effetti non avevo pensato alla velocità della shell.

Potresti cambiare il programma in modo da non avere output e fare la prova?
Avatar utente
Pappice
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 750
Iscrizione: domenica 11 febbraio 2007, 15:45

Re: Programmino su linux molto più veloce che su Windows

Messaggio da Pappice »

Guiodic ha scritto:
Pappice ha scritto: Non c'è un modo di conteggiare i... come si chiamano... i cicli di CPU consumati dal software sia sotto win sia sotto lin?
Così ci togliamo qualche dubbio...
Vabe' ma quelli potrebbero essere tranquillamente gli stessi, o differire di poco.
Sarebbero gli stessi nel caso venissero usate le stesse istruzioni del processore, giusto?
Se però sotto win per fare una operazione viene usato un gruppo di istruzioni il tempo e i cicli di cpu si allungano... dico una caVOLata?  :-[
Dicette 'o pappice 'nfacci' a noce: "Dàmme 'o tiempo ca te spertoso" - (Disse il tarlo alla noce:" Dammi il tempo che ti buco")

"Cosa pensi quando ti guardi allo specchio?" ... "RTFM!!!"
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti