Lycantrophe Skrevet 24. april 2013 Skrevet 24. april 2013 Åh, sånn. Hvordan er "helt tilfeldig" også sortert? :---D
zotbar1234 Skrevet 24. april 2013 Skrevet 24. april 2013 Åh, sånn. Hvordan er "helt tilfeldig" også sortert? :---D Sortert i en tilfeldig rekkefølge. Hvordan er det uklart?
GeirGrusom Skrevet 25. april 2013 Skrevet 25. april 2013 Sortert i en tilfeldig rekkefølge. Hvordan er det uklart? from element in dataset orderby Random.Next();
siDDis Skrevet 25. april 2013 Forfatter 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++.
Gjest Slettet+9871234 Skrevet 25. april 2013 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
GeirGrusom Skrevet 26. april 2013 Skrevet 26. april 2013 Etter mitt syn gir det liten mening - ceteris paribus - å sammenligne tolket med kompilert kode. Hvorfor det?
siDDis Skrevet 26. april 2013 Forfatter 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); } }
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å