Lycantrophe Skrevet 24. april 2013 Del Skrevet 24. april 2013 Åh, sånn. Hvordan er "helt tilfeldig" også sortert? :---D Lenke til kommentar
zotbar1234 Skrevet 24. april 2013 Del Skrevet 24. april 2013 Åh, sånn. Hvordan er "helt tilfeldig" også sortert? :---D Sortert i en tilfeldig rekkefølge. Hvordan er det uklart? Lenke til kommentar
GeirGrusom Skrevet 25. april 2013 Del Skrevet 25. april 2013 Sortert i en tilfeldig rekkefølge. Hvordan er det uklart? from element in dataset orderby Random.Next(); Lenke til kommentar
siDDis Skrevet 25. april 2013 Forfatter Del Skrevet 25. april 2013 Dataene er sortert, sa du? $ time ./a.out > /home/olav/Documents/103375239.doc < /home/olav/Documents/gameofthrones.doc < /home/olav/Documents/.hiddenpornofiles/nudepic1.jpg < /home/olav/Documents/.hiddenpornofiles/nudepic2.jpg < /home/olav/Documents/.hiddenpornofiles/nudepic3.jpg < /home/olav/Documents/.hiddenpornofiles/nudepic4.jpg < /home/olav/Documents/porn.doc > /home/olav/file753898663.txt > /home/olav/file75400904.txt > /home/olav/file75535687.txt > /home/olav/file755566055.txt > /home/olav/file75574336.txt < /home/olav/Music < /home/olav/Pictures < /home/olav/.profile.conf < /home/olav/raid < /home/olav/.ssh/id_pub.rsa < /usr/local/etc/989929161.conf < /usr/local/etc/98994238.conf < /usr/local/etc/989950314.conf < /usr/local/etc/99962676.conf < /usr/local/etc/nginx.conf < /usr/local/etc/postgresql.conf < /usr/local/etc/smb.conf real 0m0.083s user 0m0.068s sys 0m0.012s Inkludert innlesning. Er et par antagelser jeg ikke kan gjøre, så blir noen sjekker for mye. Men men. Mistenker at mesteparten her sitter i IO. #include <fstream> #include <iostream> static inline void helper( std::ifstream& file1, std::ifstream& file2, std::string& line1, std::string&line2, bool right ) { const char* arrow = right ? "> " : "< "; while( line1 < line2 && file1.good() ) { std::cout << arrow << line1 << "\n"; std::getline( file1, line1 ); } if( line1 == line2 ) return; if( !file1.good() ) return; helper( file2, file1, line2, line1, !right ); } int main() { std::string line1, line2; std::cout.sync_with_stdio( false ); std::ifstream file1( "data5.txt" ); std::ifstream file2( "data6.txt" ); while( file1.good() && file2.good() ) { std::getline( file1, line1 ); std::getline( file2, line2 ); if( line1 == line2 ) continue; if( line1 < line2 ) helper( file1, file2, line1, line2, true ); else helper( file2, file1, line2, line1, false ); } while( file1.good() ) { std::cout << "> " << line1 << "\n"; getline( file1, line1 ); } while( file2.good() ) { std::cout << "< " << line2 << "\n"; getline( file2, line2 ); } std::cout.flush(); } Veldig nice Lycantrophe! Testa den nettopp her, 5x raskare enn Python og det inkludert innlesning! + For veldig lettlest kode også! Sånt som det der får meg til å misunne folk som kan C eller C++. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 25. april 2013 Del Skrevet 25. april 2013 Sånt som det der får meg til å misunne folk som kan C eller C++. Viktigst i prioritert rekkefølge: Algoritmer og datastrukturer. Maskinvare. Språk, tolket kontra kompilert kode. Etter mitt syn gir det liten mening - ceteris paribus - å sammenligne tolket med kompilert kode. Det er fint at der er noen her inne som ikke er blinde og kan C Lenke til kommentar
GeirGrusom Skrevet 26. april 2013 Del Skrevet 26. april 2013 Etter mitt syn gir det liten mening - ceteris paribus - å sammenligne tolket med kompilert kode. Hvorfor det? Lenke til kommentar
Gjest Slettet+9871234 Skrevet 26. april 2013 Del Skrevet 26. april 2013 Du vet svaret. Lenke til kommentar
Lycantrophe Skrevet 26. april 2013 Del Skrevet 26. april 2013 Du får gjerne opplyse oss. Lenke til kommentar
siDDis Skrevet 26. april 2013 Forfatter Del Skrevet 26. april 2013 Konverterte koden til Lycantrophe til Java. Blei ca 50% treigare etter 20 looper som varma opp JVM'en. Tipper det er compareTo() og equals() som drar ned ytelsen. package no.diskusjon; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; public class Main { private static void helper(BufferedReader br1, BufferedReader br2, String line1, String line2, boolean right) throws IOException{ String arrow = right ? "> " : "< "; while(line1.compareTo(line2) < line2.compareTo(line1)){ System.out.println(arrow+line1+"\n"); line1 = br1.readLine(); } if(line1.equals(line2)) { return; } helper(br2, br1, line2, line1, !right); } public static long start(){ final File file1 = new File("/home/olav/Downloads/data5.txt"); final File file2 = new File("/home/olav/Downloads/data6.txt"); String line1; String line2; try{ BufferedReader br1 = new BufferedReader(new FileReader(file1)); BufferedReader br2 = new BufferedReader(new FileReader(file2)); long start = new Date().getTime(); while(((line1 = br1.readLine()) != null) && (line2 = br2.readLine()) != null){ if(line1.equals(line2)) { continue; } else if( line1.compareTo(line2) < line2.compareTo(line1) ){ helper(br1, br2, line1, line2, true); } else{ helper(br2, br1, line2, line1, false); } } while ((line1 = br1.readLine()) != null){ System.out.println("> " + line1 + "\n"); } while ((line2 = br2.readLine()) != null){ System.out.println("< " + line2 + "\n"); } return new Date().getTime() - start; } catch(IOException e){ return -1l; } } public static void main(String[] args) { long ms = -1; for(int i = 0; i < 20; i++){ ms = start(); } System.out.println(ms); } } 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å