RetardedBuckets Skrevet 20. august 2016 Del 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? Lenke til kommentar
Enthroner Skrevet 20. august 2016 Del Skrevet 20. august 2016 Vis oss gjerne koden så er det lettere å komme med tips Lenke til kommentar
RetardedBuckets Skrevet 21. august 2016 Forfatter Del 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 Lenke til kommentar
j0achim Skrevet 21. august 2016 Del Skrevet 21. august 2016 Hva med å bruke SortedSet<T>() og deretter spytte ut listen etter en er ferdig med å laste inn data. 2 Lenke til kommentar
Emancipate Skrevet 25. august 2016 Del 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 Lenke til kommentar
GeirGrusom Skrevet 29. august 2016 Del 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 Lenke til kommentar
Emancipate Skrevet 29. august 2016 Del 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 Lenke til kommentar
GeirGrusom Skrevet 1. september 2016 Del 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 Lenke til kommentar
Emancipate Skrevet 1. september 2016 Del 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. Lenke til kommentar
GeirGrusom Skrevet 2. september 2016 Del 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. 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å