Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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 av RetardedBuckets
Lenke til kommentar

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 av GeirGrusom
Lenke til kommentar

 

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 av GeirGrusom
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...