MarcelSB Skrevet 30. mars 2003 Del Skrevet 30. mars 2003 Kompilerte et knøttlite c++ program i linux som jeg lagde i Windoze for et par måneder sida, og la merke til at filstørrelsen på linux binaryen var mye mindre enn Windoze sin. Windoze fila blei på 87.5 Kb mens linux fikk 17.9 Kb :o Er det slik at linux er mye mer effektiv ved kompilering enn det Windoze er? Kompilerte med Dev-cpp i windows og gcc i linux, og er helt newbie i c++ Her er koden: #include <iostream.h> #include <fstream.h> #include <string.h> int main() { cout<<endl; cout<<" ---------------------------------------------"<<endl; cout<<"| Factors |"<<endl; cout<<" ---------------------------------------------"<<endl<<endl; cout<<"By MarcelSB"<<endl<<endl; long int compare, divider; float input, temp; cout<<"Actions will be logged in "Facors.txt""<<endl<<endl; ofstream log("Factors.txt", ios::app); cout<<"Enter number to be factorized: "; cin>>input; int original=(int) input; cout<<endl; log<<"Factorizing "<<original<<": "; compare=original; if (input<=0) { cout<<"The number must be positive..."<<endl; log<<"Error: The Number must be positive..."<<endl; cout<<endl<<"Thank you for using Factors..."<<endl<<endl; log.close(); cout<<"Do you want to factorize another number? (0=no 1=yes) "; cin>>temp; if (temp==1) main(); return 0; } if (input>2000000000) { cout<<"The number must be below 2'000'000'000"<<endl; log<<"Error: The Number must be below 2'000'000'000..."<<endl; cout<<endl<<"Thank you for using Factors..."<<endl<<endl; log.close(); cout<<"Do you want to factorize another number? (0=no 1=yes) "; cin>>temp; if (temp==1) main(); return 0; } if (input!=compare) { cout<<"The number must be an integer..."<<endl; log<<"Error: The Number must be an integer..."<<endl; cout<<endl<<"Thank you for using Factors..."<<endl<<endl; log.close(); cout<<"Do you want to factorize another number? (0=no 1=yes) "; cin>>temp; if (temp==1) main(); return 0; } cout<<"Factors of "<<original<<":"<<endl<<endl; for (divider=2; divider<input; divider++) { temp=input/divider; compare=(int)temp; if (temp==compare) { cout<<divider<<" * "; log<<divider<<" * "; input=input/divider; divider=1; } } if (input==original) { cout<<"The number is a prime number, and has no factors..."<<endl; log<<"The number is a prime number, and has no factors..."<<endl; } else { cout<<input<<" = "<<original<<endl; log<<input<<" = "<<original<<endl; } cout<<endl<<"Thank you for using Factors..."<<endl<<endl; log.close(); cout<<"Do you want to factorize another number? (0=no 1=yes) "; cin>>temp; if (temp==1) { cout<<endl<<"--------------------------------------------------------------------------------"; main(); } return 0; } Det er bare og cut'n'paste den er GNU :wink: Ble litt lang den der MarcelSB Lenke til kommentar
_mgr_ Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 hehe... Snart på tide med WINE for Windows?? Emulere Linux programmer i win Lenke til kommentar
runeb Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 Snart på tide med WINE for Windows?? Emulere Linux programmer i win Det kalles Cygwin Lenke til kommentar
whoi Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 Jeg dreiv å leika litt med sånne c++ tutorials i windows for en tid siden, og prøvde forskjellige compilatorer. Jeg fant ut at den ene lagde veldig store filer, og den andre lagde små filer, akkurat som du opplevde nå. Jeg husker ikke hvem compilatorer jeg brukte, men jeg mener den ene var en gratis c++ compilator fra borland. Jeg fant aldri ut av hvorfor det ble så stor forskjell i filstørrelsen, men de funka akkurat likt :-? Lenke til kommentar
A_N_K Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 Er ikke Windows som bestemmer hvor effektiv kompilasjonen/linkingen er, i utgangspunktet. Det du må se på er hvilken kompilator du bruker og ... linker du statisk eller dynamisk? Så vidt jeg forsto linkes programmer dynamisk default i Linux, og du vil dermed få en mye mindre programfil, siden kode vil linkes inn ved kjøring. Lenke til kommentar
iDude Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 Kompilerte et knøttlite c++ program i linux som jeg lagde i Windoze for et par måneder sida, og la merke til at filstørrelsen på linux binaryen var mye mindre enn Windoze sin. Windoze fila blei på 87.5 Kb mens linux fikk 17.9 Kb :oEr det slik at linux er mye mer effektiv ved kompilering enn det Windoze er? ... Vanskelig å si, kommer an på kompileringsopsjoner du gir til de forskjellige kompilatorene. Gir du feks debuggings-opsjoner i den ene, men ikke den andre får du automatisk store forskjeller. Men det ville ikke forbause meg om gcc/g++ var mer effektiv, for å si det sånn... Lenke til kommentar
TiaZzz Skrevet 31. mars 2003 Del Skrevet 31. mars 2003 Hvilke kompilatorer brukte du? gcc er ikke kjent som den beste kompilatoren i verden, men den er defacto standard i Linux. Intel har jo en egen kompilator som ofte knuser gcc, men den kan ikke kompilerer f.eks. kjernen. Hvilken versjon av gcc har også mye å si, samt hvilke flagg du tok med i kompileringen. Det kan tenkes at den større versjonen i Wintendo knuser den lille i Linux, fordi du optimaliserte med hensyn på størrelse i Linux, men hastighet i Wintendo. Jeg tipper det er debugging, eller linking som gir deg forskjellen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå