RetardedBuckets Skrevet 20. august 2016 Skrevet 20. august 2016 Hei, Jeg leser inn 14 millioner linjer fra en tekstfil, legger de inn i en liste, og skal sortere listen. Å lese inn strengene til en liste tar bare et par sekunder, men sorteringen tar 49 sekunder. Jeg prøvde å gjøre det samme i java, python, og c++, og alle klarte å sortere på 1-2 sekunder. Jeg bruker bare sort() metoden til List<>. Hva er det jeg gjør feil?
Enthroner Skrevet 20. august 2016 Skrevet 20. august 2016 Vis oss gjerne koden så er det lettere å komme med tips
RetardedBuckets Skrevet 21. august 2016 Forfatter Skrevet 21. august 2016 (endret) Vis oss gjerne koden så er det lettere å komme med tips Koden er list.sort(); Resten av koden er bare lesing fra fil inn i listen. Og det fungerer helt fint. For å spørre litt annerledes... Er det normalt å ta 50 sek å sortere en liste på 14 millioner elementer? Endret 21. august 2016 av RetardedBuckets
j0achim Skrevet 21. august 2016 Skrevet 21. august 2016 Hva med å bruke SortedSet<T>() og deretter spytte ut listen etter en er ferdig med å laste inn data. 2
Emancipate Skrevet 25. august 2016 Skrevet 25. august 2016 (endret) For å spørre litt annerledes... Er det normalt å ta 50 sek å sortere en liste på 14 millioner elementer? Det kan umulig være normalt. Endret 25. august 2016 av Emancipate
GeirGrusom Skrevet 29. august 2016 Skrevet 29. august 2016 (endret) Hvis det er aktuelt kan du prøve med StringComparer.Ordinal. Det burde få det til å gå temmelig vesentlig raskere med den ulempen at æ,ø,å sorteres galt (blir å,æ,ø) Testet i Java nå, og det tar like lang tid der, men standard oppførselen er Ordinal, ikke CurrentCulture, så den sorterer æ, ø og å feil som standard. Der fikk jeg 20s med Collections.sort(arrayList). std::sort(list.begin(), list.end()) tok 40s derimot (vector<wstring>), men jeg antar dette er på grunn av en langt fra ideell løsning. Jeg brukte GUID til string (System.Guid, java.util.UUID, UuidCreate/UuidToStringW) i alle tilfellene, og ekvivalente løsninger (List<T>, ArrayList<T> og std::vector). Kan du vise hvilken kode du har hvor det bare tar et par sekunder i Java og C++? For det gjør det ikke her ihvertfall. Endret 29. august 2016 av GeirGrusom
Emancipate Skrevet 29. august 2016 Skrevet 29. august 2016 Der fikk jeg 20s med Collections.sort(arrayList). Det var likevel tregt. Kanskje det har med test-dataene å gjøre? Hvis du bruker denne, og laster den inn 10 ganger, tar det fortsatt så lang tid? http://norvig.com/big.txt
GeirGrusom Skrevet 1. september 2016 Skrevet 1. september 2016 (endret) Der fikk jeg 20s med Collections.sort(arrayList).Det var likevel tregt. Kanskje det har med test-dataene å gjøre? Hvis du bruker denne, og laster den inn 10 ganger, tar det fortsatt så lang tid? http://norvig.com/big.txt 600-ish ms på Java 8 og på .NET (differansen var for liten til å ha noen betydning, men det var større variasjon mellom hver måling i Java enn i .NET av en eller annen grunn) for 10x sortering (med da kopiering inkludert). Det er med Ordinal sortering. Problemet er nok ikke .NET her, for det ser ut for meg som at det ikke er noen betydningsfull forskjell i ytelsen på sortering mellom dem. Endret 1. september 2016 av GeirGrusom
Emancipate Skrevet 1. september 2016 Skrevet 1. september 2016 for 10x sortering Jeg mente ikke å sortere den 10 ganger, men å laste den inn ti ganger, så man fikk 10 ganger så mange elementer i lista. Og så sortere den én gang.
GeirGrusom Skrevet 2. september 2016 Skrevet 2. september 2016 for 10x sorteringJeg mente ikke å sortere den 10 ganger, men å laste den inn ti ganger, så man fikk 10 ganger så mange elementer i lista. Og så sortere den én gang. Gjør det selv.
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å