Gå til innhold

gunnard

Medlemmer
  • Innlegg

    427
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av gunnard

  1. Dagens JPEG tilbyr så vidt jeg vet ikke tapsfri kvalitet selv om det er mulig å beskjære og rotere bilder uten ytterligere kvalitetstap.

    Man har jo JPEG-LS, som bygger på andre kompresjonsteknikker enn JPEG. I tillegg er det enkelte som kaller lossy JPEG-kompresjon uten vektmatriseskalering for lossless, men det er ikke helt korrekt da tallene må avrundes til heltall etter DCTen (diskret cosinus transformen), men det store tapet i JPEG-kompresjonsalgoritmer, vektmatriseskaleringen, er borte.

  2. Hva mener du med "finne eit angitt symbol"? Mener du symboler som har lignende form som det symbolet eller som er nøyaktig like? Å finne symboler med lignende form er vanskelig, med mindre du finner en implementasjon som gjør dette tilstrekkelig godt for ditt behov.

     

    Dersom du er ute etter å finne en nøyaktig kopi, mer presist så har du (eller kan generere) et delbilde og ønsker å finne hvor dette forkommer i et bilde, er det bare å korrelere bilde med delbildet og ta ut pikselkoordinatene til de(t) høyeste verdi(ene). Merk at denne metoden, ofte kalt template-matching, er variant i forhold til både skalering og rotasjon, altså hvis du for eksempel har et delbilde av en liten firkant vil du ikke finne noen store firkanter i bildet, ei heller noen firkanter som er rotert annerledes enn den firkanten du har i delbildet. Fordelen med metoden er at den er så enkel å implementere at det ikke er verdt bryet å lete etter en ferdig implementasjon, i tillegg til at den er svært effektiv under forutsetning at du faktisk ikke ønsker også å finne skalerte og roterte versjoner av symbolet.

  3. Når det gjelder feilmeldinger skjønner jeg ikke noe av det samme hvor det skulle peke hen.

    NullPointerException betyr her at arrayen ikke er opprettet (så det er egentlig ikke en array ennå), det er bare en peker på "null".

     

    Jeg glemte å si at verdiene inne i firkantparantesene IKKE er rett plassert. Jeg bare prøver meg frem uten å lykkes.

    Det er jo opplagt, men det er mange andre feil, og det er disse som gjør at koden ikke kjøres.

     

    Det er nok ikke bare denne delen som bør endres. Promblemet er jo at jeg ikke kan det.

    Det kan være lurt å starte på et mye mer grunnleggende nivå og arbeide seg oppover. Dersom du insisterer på å løse dette problemet nå må du tenke at du trenger å lære deg mer generelle ting samtidig, altså må du uansett lese litt generelt utenom. Et greit sted å starte da er å lese såpass at du forstå hva som er feil i den kodebiten du sikter til:

    if (generations > 0)
    	for (int i=0;i<barn.length;i++)
    			barn[i].lagBarn(generations -1);
    					for(int i=0;i<barn.length;i++)
    }

  4. Exception in thread "main" java.lang.NullPointerException

    at DataNode.DataNode.dump(DataNode.java:109)

    at DataNode.Main.main(Main.java:28)

    Java Result: 1

    Når du får ut en feilmelding så bør du sjekke den linja som står oppgitt. Hvis det er denne linja:

    if (data[i][j] == 0) {

    så betyr feilmeldingen at data-arrayen din er null, det vil si at det ikke er en array, bare en tom peker. Hvorfor du får denne feilmeldingen vet jeg ikke, du får den iallfall ikke direkte av den koden du la ut. I den koden du la ut får man mange feil. For det første får du feil i:

    DataNode top = new DataNode(data);

    ettersom du prøver å aksessere (bruke) variabelen "data" som ikke er statisk, så her skulle det stått:

    DataNode top = new DataNode(a);

    Videre får iallfall jeg en bunch av feil siden du lager alle arrayene dine slik:

    int nyData2[][] = {{data[2][1],data[1][0],data[0][2]},{data[2][2],data[2][1],data[1][0]},{data[2][2],data[1]2],data[0][2]}};

    (merk [1]2]) men dette er kanskje en feil grunnet kopieringen?

     

    Uansett, videre er det jo opplagt noe galt i denne delen av koden:

    if (generations > 0)
    	for (int i=0;i<barn.length;i++)
    			barn[i].lagBarn(generations -1);
    					for(int i=0;i<barn.length;i++)
    }

    og dersom du fjerner den ekstra "for(int i=0;i<barn.length;i++)" vil du få feil siden "barn[2]" er "null" ettersom du i koden:

    		if (data[2][2] == 0) {
    		int nyData1[][] = {{data[2][1],data[1][0],data[0][2]},
    						   {data[2][2],data[2][1],data[1][0]},
    						   {data[2][2],data[1][2],data[0][2]}};
    		int nyData2[][] = {{data[2][1],data[1][0],data[0][2]},
    						   {data[2][2],data[2][1],data[1][0]},
    						   {data[2][2],data[1][2],data[0][2]}};
    		barn[0] = new DataNode(nyData1);
    		barn[1] = new DataNode(nyData2);
    	}

    ikke tilordner (setter lik) "barn[2]".

     

    Så det er endel feil og du får videre feil dersom du endrer det over. Men for at det skal være mulig å hjelpe deg må jeg / vi skjønne hva du faktisk vil. Det eneste jeg tror jeg forstår er at du har et program som gjør etter eller annet med en 2x2-array og du har lyst til å lage et program som gjør noe av det samme med en 3x3-array, sant? Og du skal omordne elementene i 3x3-arrayen, sant? Det jeg ikke forstår er hvordan du ønsker at omordningen skal skjer. Det jeg heller ikke forstår er hva som egentlig er poenget, men det er ikke så farlig dersom du er helt presis på hva du ønsker skal skje.

  5. Bare hyggelig :)

     

    Er bare en liten skrivefeil. Som du ser så finner den en String[][], altså en dobbeltarray av String's, mens den vil ha en String, siden "String" står som returtype i metodedeklarasjonen. Du må dermed skifte returtypen slik:

    public String[][] leilighet()
    {
    return Main.leilighet;
    }

    For det er det som metoden skal sant, returnere hele dobbeltarray med alle leilighetene?

     

    EDIT: Du fant ut av det selv ser jeg :)

  6. Det gjør det :)

     

    Dersom du vil bruke en statisk variabel i en annen klasse (som du har tilgang til, f.eks. at den er "public" som her), gjør du dette ved å skrive:

    <klassenavn>.<variabelnavn>

     

    For eksempel, for metoden:

    	public String leilighet()
    {
    	return.leilighet();
    }

    som jeg regner med skal returnere selve leilighets-arrayen, skal dette skrives som:

    	public String leilighet()
    {
    	return Main.leilighet;
    }

    mens for eksempel i testen:

    if (leilighet[y][x] == null)

    skal det stå:

    if(Main.leilighet[y][x] == null)

     

    Forøvrig vil nok mange reagere på kodestilen her, d.v.s. ha en statisk array i en klasse, bruke den og t.o.m. returnere den i/via metoder i en annen klasse. Om du bryr deg om dette er en annen sak :)

     

    EDIT: Dersom du fjernet "." i leilighet-metoden vil den metoden nå bare kalle seg selv i det uendelige, noe som tvilsomt er det du vil.

  7. En statisk metode, som main-metoden er, kan direkte* kun kalle på statiske metoder og bruke statiske variabler. Med andre ord, dersom det er arrayen "public String leilighet [][];" som du ønsker å aksessere i main-metoden må du gjøre den statisk, altså skrive:

    public static String leilighet [][];

     

    * Indirekte, altså via et objekt, som for eksempel "hybelhus" over, kan en statisk metode også bruke ikke-statiske metoder og variabler.

     

    EDIT: Omformulert.

  8. Problemet er at du bruker hendelsestråden til å eksekvere koden. Hvis du for eksempel tar en kort titt på repaint-metoden du kaller ser du at opptegninga forårsakes av:

    Toolkit.getEventQueue().postEvent(e);

    som vil si at din oppdatering av tekstfeltet vil vente til eksekveringen av erlik-metoden er fullført siden denne utføres i hendelsestråden (EventQueue).

     

    For å løse dette trenger du en klasse som implementere Runnable (enten direkte eller indirekte via Thread-utviding). Lag så en ny tråd og i den tråden kjører du erlik-metoden.

     

    Hvis du vil ha enkleste løsning skrevet ut er det kun tre små endringer:

    1. Kall erlik-metoden for "run", altså:

    public void run() {

    2. Skrive "implements Runnable" i klassedefineringen, altså:

    public class Skjerm extends JPanel implements Runnable {

    3. For å eksekvere metoden i en ny tråd skriver du nå:

    new Thread(Skjerm.this).start();

    "Skjerm.this" kan byttes ut med "this" dersom du er i Skjerm-klassen (og ikke i en indre klasse av den), men "Skjerm.this" fungerer i begge tilfeller.

     

    Du skal forresten ikke behøve å kalle på repaint()-metoden. En annen ting, dersom du til en annen gang er i tvil om hvilken tråd du eksekverer en kodedel i er det bare å skrive:

    System.out.println(Thread.currentThread());

     

    Enjoy :)

  9. Såvidt jeg kan skjønne snakker tmg om to JFrames, ikke JInternalFrames. Men ja, JInternalFrames er fint til sitt bruk, og flott hvis man skal lage et program der f.eks. brukeren skal kunne opprette vinduer (med nye nettsider, dokumenter, bilder, e.l.). Uansett, de fleste mindre programmer har bare et forhåndsdefinert mindre antall vinduer/dialogbokser der bruk av JInternalFrames blir kunstig (mener jeg).

  10. 2-eren er muligens 2-eren i "J2SE" (Java 2 Platform, Standard Edition). Det trenger ikke være snakk om Java 1.2.

     

    Men 1999 var vel før selv 1.4 sin tid (versjonen jeg started å lære Java med). 1.4 vil bli regnet som utdatert meget snart. 1.5 har betydelige språkforbedringer (generics, enums, m.m.).

    Stemmer, selv Java 1.3 ble lansert så sent som 8. mai 2000, så det er Java 1.2 som blir omtalt i den boka.

  11. Det spørs selvsagt litt hva du skal programmere (i Java) og hvor mye tid du skal bruke på Java, men jeg ville nesten uansett gått for en bok beregnet på Java 1.5 eller Java 1.6. Det finnes mange elektroniske veiledninger til Java hvis du ikke vil kjøe en ny bok. Uansett, per prinsipp angående Java, "Write once, run anywhere", skal din Java 1.2 kjøre i nyere Runtime Environments på alle platformer, så meningsløs kode får du ikke, selv om enkelte ting blir svært tungvint i Java 1.2 (mange av oppdateringene til Java gjør det lettere å programmere og debugge).

  12. Om du har lyst på den ekstra lagringsplassen må du finne ut selv, den ekstra GiB minnet vil nok i normale brukssituasjoner ikke ha noe/mye å si. CPU-oppgraderingen er betydelig, iallfall ifølge denne siden som karakteriserer den første, T2390-CPUen, blant "Budget Processors" som beskrives slik:

    "The processors in this bracket are made to perform basic tasks, however, this does not mean that they are not capable of more intensive work. They can run almost any program, but be prepared for longer waits."

    mens T7500-CPUen i klassen "Performance Processors" (over "Mainstream Processors") som beskrives slik:

    "These processors are the cream-of-the-crop."

     

    Om oppgraderingen er verdt tusenlappen må du jo finne ut av selv. Sett bort fra den ekstra lagrinsplassen vil det nok være en betydelig ytelsesøkning til den dyreste. Hvis du er redd for redusert batterilevetid kan det være greit å få med seg at TDP til T7500 er 34W, mens 35W for T2390, så selv om TDPen ikke sier alt burde det være ganske likt strømforbruk på disse.

     

    Forresten har jeg personlig god erfaring med Elprice, fikk problemer med musa på en bærbar derfra, leverte den inn og nevnte samtidig at batteriet var litt dårlig, da den kom tilbake var musa fiksa, i tillegg hadde de satt inn et nytt batteri.

     

    EDIT: Ser forresten på anmeldelsene av den dyreste at det er flere som klager på viftestøy, det kan hende at støynivået er lavere på den billigste, men trenger ikke siden strømforbruket på CPUene trolig er forholdsvis likt. Uansett, det er jo noe du må tenkte på når du kjøper denne, trolig uansett hvem du velger.

  13. Jeg synes iallfall brevet ser langt bedre ut nå! :)

    Litt småpirk-kommentarer kan være på sin plass likevel:

     

     

    -Hvor god har man vært til å følge bruksanvisning fra produsenten ang. batterivedlikehold (se ved­lagt bruksanvisning)

    Jeg føler ingen behov for å lese i en bruksanvisning om hvordan jeg skal lade et batteri (noe jeg i senere tid er glad for, siden bruksanvisningen omtaler feil type batteri). Jeg har idag lest mye på nett og i bruksanvisningen dere la ved, og ser at jeg har fulgt alle rådene som står der (utenom de rådene som ikke stemmer).

    Etter min mening er dette svaret krassere enn nødvendig. Under er det bare en av påstandene til bruksanvisningen du går imot. Hvis du har fulgt alle andre kan du bare si: "Jeg har fulgt alle rådene som står i bruksanvisningen med unntak av ett (jeg vil utdype dette lengre nede)."

     

    -Hvor mye står laderen tilkoblet (...) 2. mens maskinen er skrudd av

    (...)

    Svar på 2: Maskinen har aldri vært av i mer enn to uker i strekk (to uker er den tiden bruksanvisningen mener at jeg bør ta ut batteriet hvis det har vært inaktivt).

    Du kan godt ta dette svaret med under "Svar på påstander fra bruksanvisningen:", men det er strengt tatt ikke svar på spørsmålet over. Spørsmålet er jo (slik jeg forstår det) om du har latt laderen stå i maskinen mens den var av (og gjerne fulladet). Har du? (dette kan da ha noe av den samme effekten som å la laderen stå i når maskinen er i bruk og batteriet er fulladet, selv langt mindre kritisk siden maskinen i seg selv ikke er så varm, men det kan være varmt i rommet?)

     

    -La batteriet lades ut ved vanlig bruk til omtrent 10% av full lading før du lader det opp igjen.

    Det er faktisk det stikk motsatte av hva man skal gjøre! Dette gjelder for Ni-Cd batterier for å hindre “memory-effect”, men “memory-effect“ eksisterer ikke i Li-ion batteri. Et Li-ion batteri skal IKKE brukes helt opp. Hvis spenningen til en av cellene i batteriet kommer under et visst nivå, er batteriet ødelagt. For å hindre at batteriet har blitt helt tomt, har jeg satt maskinen til å gå i dvale hvis spenningen skulle bli for lav.

    For det første påstår ikke de at du skal lade batteriet helt ut, men til 10 %. Det du skriver om dersom batteriet skulle bli helt utladet gjelder ikke for et batteri som lades ved 10 % (hvis man skulle gå under her er det skadelig, som du sier). Etter min mening vil det ikke være skadelig å følge dette rådet. Sagt det, så har rådet absolutt ingen nytteverdi slik jeg forstår det. Det er, som du sier, ingen minneeffekt på Li-ion batterier (utenom "digital minne" som er grunnen til at kalibrering er anbefalt en gang per 30 ladning). Men selv om det er ingen grunn til å følge dette rådet, synes jeg svaret ditt blir krassere enn nødvendig. Nå er det langt fra sikkert du er enig med meg her, men jeg ville iallfall svart litt mer i denne retningen:

    Li-ion batterier har ingen minne-effekt slik NiCd (og NiMh, selv mindre) batterier hadde. Paddeladning har ingen negativ effekt på disse type batteriene. Derimot kan full utladning virke negativ på Li-ion batteriet. Derfor har jeg latt maskinen gå i dvale for at dette ikke skulle skje.

    Videre kan du muligens fjerne det med at du "tror" i kommentaren: "(selv om jeg egentlig ikke tror at dette skal ha noe å si på et li-ion batteri, med mindre du ønsker å kalibrere batteriet)". Det stemmer jo :)

     

     

    Igjen, lykke til med saken! Si fra hvordan det går..? :)

  14. Interessant sak! Håper det går din / forbrukernes vei :)

    Noen kommentarer (ble visst endel :p ):

     

     

    Komplett spør:

    -Hvor mye står laderen tilkoblet selv om batteriet ikke har behov for lading?

    og du ser ut til å svare mest på / forsvare at du ikke har tatt ut batteriet, utenom å så vidt nevne først at du har hatt laderen tilkoblet hele tiden. Det Komplett ser ut til å spørre om er om du har hatt laderen i mye, ikke batteriet. Hvis jeg hadde vært deg ville jeg brukt mindre tid på å argumentere for å la batteriet stå inne (noe jeg ikke kan se de spør om engang, så hvorfor kommentere at du har hatt det konstant inne og - implisitt i argumentasjonen mot at dette er ille - fortelle dem at endel mener dette kan skade batteriet?), og i stedet fortalt litt om de gangene du har brukt den på batteriet, sånn som i friminuttene osv, uten at det har blitt fullstendig utladet. Hvorfor? For det første spør Komplett om dette. Og hvorfor spør de? Fordi å ha laderen tilkoblet samtidig som batteriet er fulladet er en velkjent faktor som "aksellererer degenereringsprosessen" til batteriet (spesielt i kombinasjon med varme omgivelser), som for eksempel skjer i eksempelet "jvc1986" skriver om.

     

    Dessuten skal en pc ha en ladekrets som har to oppgaver:

    1: Lade batteriet når det trengs, og kople fra ladingen når batteriet ikke har behov for lading.

    2: Vedlikeholdslade etter den type batteriteknologi som er benyttet (i dette tilfellet Li-ion).

    Jeg ville ikke dratt dette inn hvis jeg var deg. For det første ser det ikke ut til å stemme med HPs bruksanvisnings:

    "Hvis du lar batteriet bli værende i maskinen, lades det så lenge maskinen er koblet til en ekstern vekselstrømskilde."

    som ikke ser ut til å ta noe forbehold for om batteriet er fulladet eller ikke (selv om dette selvfølgelig kan være tilfellet). For det andre er det utallige eksempler på at det har betydelig effekt om laderen er tilkoblet mens batteriet er fulladet, da spesielt i forbindelse med varme omgivelser, noe som også "teorien" tilsier (handler om bruk og lagring):

    Batteriene mister/taper kapasitet over tid. Dette gjelder enten batteriet er i bruk eller ikke. Prosessen er naturlig og kan ikke stoppes. Den kan til en viss grad forsinkes og den kan selvfølgelig akselereres. På grunn av kjemiske endringer inne i batteriet (oksidering), øker batteriets indre motstand slik at det ikke lenger kan opprettholde den opprinnelige ladningskapasiteten. Temperaturforholdene er en av faktorene som påvirker batteriets kapasitet. Jo varmere omgivelser desto raskere brytes batteriets kapasitet ned. Det er ikke gunstig å la den bærbare datamaskinen ligge i sola eller inne i en overopphetet bil en varm sommerdag. Batteriene bør ikke brukes eller lagres i temperaturer over 40 grader. Ønsker man å lagre Lithium-ION batterier, bør dette skje i kjøleskap og med batteriet 40 % ladet. Det verste man kan gjøre er å lagre 100 % ladet batteri i for varme omgivelser.

    Uansett om en ladekrets forhindrer at selve batteriet lades har liten betydning, for et fulladet batteri i varme omgivelser vil gjør at det svekkes fortere, i eller utenfor maskinen (nå vet ikke jeg hvor varm maskinen din er, men over 40 grader er jo ganske vanlig).

     

    (...) siden bruksanvisningen oppfordrer meg til å la batteriet stå i (tror jeg)...

    Du kan jo håpe på det, men slik jeg tolker den, dvs den delen av bruksanvisningen som du angav i andre post, så beskriver den bare fordeler og ulemper ved å ta ut batteriet mot å la det være. Når du ser ut til å dra denne problematikken (om batteriet bør taes ut eller ikke) sterkt inn vil det ikke være unaturlig Komplett fant frem neste setning fra HPs bruksanvisning:

    På den andre siden vil batterier som står i maskinen, lades sakte ut når maskinen er slått AV. Dette er grunnen til at batteriet leveres for seg selv og må settes inn i maskinen før maskinen kan kjøres på batteristrøm

     

     

    Sagt alt det tror / bør du likevel ha en god sak. Selv har jeg vært mye med en (nå to år gammel) maskin som har blitt helseløst varm (80-90 grader). Batteriet har aldri blitt tatt ut av denne. I begynnelsen var den i tillegg brukt endel med laderen i når den var fulladet. Uten at jeg har noen opprinnelig mål, var batteritiden nede på urovekkende gode timen. I etterkant, som er over det siste året, har den vært bevisst paddeladet, for det meste mellom 20 % og 80 %, fortsatt alltid med batteriet i. Har ikke opplevd noen degradering siden (fortsatt gode timen).

     

    Sagt med andre ord, det skal trolig svært mye til for å komme ned i en batterilevetid på 5 minutter, selv med uforsiktig bruk. Og trolig blir ikke maskinen din så varm. Uansett, du ser ut til å konsentrere deg svært om å forsvare at du ikke har tatt ut batteriet. Jeg tviler på at Komplett kommer til å bry seg mye om dette. Det som derimot er viktig, er om du har hatt laderen i mens batteriet er fulladet. Har du? Det høres ikke sånn ut, men likevel står det litt skremmende i ditt svar: "Laderen er tilkoblet hele tiden mens maskinen er på", heldigvis etterfulgt av "gitt at jeg ikke kjører strøm fra batteriet" i parantes, som egentlig gjør forrige sitat meningsløst.

     

     

    Håper det kan være til hjelp :) Lykke til med saken!

  15. Men, nytt spørsmål. Kan man typekonvertere en int[] til Integer[]?
    Nei, men hvorfor/hva vil du?

    Autoboxing

    Ikke at jeg vet hvordan lassejl's kode er, men som du ser fra den siden du lenket til vil det trolig i de fleste tilfeller være mest effektivt å ikke bruke autoboxing og unboxing:

    It is plenty fast enough for occasional use, but it would be folly to use it in a performance critical inner loop.
  16. Meget skuffende resultat tho, beste er 0.078sec på 1mill tall, samme som før. Kjørte på 1 tråd med dual core cpu. Lurer litt på hvorfor 1 tråd går fortere enn 2 (0.109sec) på dual core men, er det slik at main metoden opptar en tråd eller noe?

    Main-tråden, den tråden JVM lager når den kaller på din main-metoden, er også en tråd ja. Så dersom du lager da to nye tråder vil programmet ditt ha totalt 3 tråder (egentlig kjører også GC på egen tråd, kanskje også flere). Poenget er imidlertid at prosessorer har tradisjonelt sett blitt designet for å takle og kjøre flere tråder parallelt (teknisk er det bare litt fra en tråd så litt fra annen tråd så litt til kanskje på den først, fordelingen her er det OSet som tar seg av). Siden main-tråden ikke gjør noe, eller bare ekstremt lite, for eksempel at den bare står og venter, vil ikke denne "oppta" en kjerne, for det er ingen tråder som har enerett på en kjerne. Omvendt er det derimot (så vidt jeg vet iallfall), en tråd vil bare kjøre på en kjerne.

     

    Det man må passe seg for er at det ikke er mange flere tråder som ønsker å bruke all kapasitet av en kjerne enn man har kjerner i systemet. Altså, hvis du har en dobbelkjerner, er det OK å lage to tråder som sorterer, selv om det teknisk er flere tråder som JVM kjører, men det er dumt å lage flere beregningstråder enn dette. Likevel, siden prosessor-forbedringene før flerkjerneteknologien ble en realitet for mannen på gata brydde seg om å optimalisere bruk av flere tråder på en kjerne, vil man ikke merke noen betydelig forskjell ved for eksempel å lage tre beregningstråder. Men ved å gå opp til 10 er det merkbart, og med 100 blir det bare idioti. Jeg lagde et tilsvarende lite testprogram som viser dette:

     

     

    Intel Core Duo T2400 @ 1.83GHz , 512 MB memory

     

    (standard, -Xmx64m)

    Sorting of 5000000 integer elements was successfully completed in 1.375 seconds using a single thread.

    Sorting of 5000000 integer elements was successfully completed in 1.359 seconds using a single thread.

    Sorting of 5000000 integer elements was successfully completed in 1.359 seconds using a single thread.

     

    Sorting of 5000000 integer elements was successfully completed in 0.844 seconds using 2 threads.

    Sorting of 5000000 integer elements was successfully completed in 0.875 seconds using 2 threads.

    Sorting of 5000000 integer elements was successfully completed in 0.844 seconds using 2 threads.

     

    Sorting of 5000000 integer elements was successfully completed in 0.891 seconds using 3 threads.

    Sorting of 5000000 integer elements was successfully completed in 0.875 seconds using 3 threads.

    Sorting of 5000000 integer elements was successfully completed in 0.875 seconds using 3 threads.

     

    Sorting of 5000000 integer elements was successfully completed in 1.125 seconds using 10 threads.

    Sorting of 5000000 integer elements was successfully completed in 1.156 seconds using 10 threads.

    Sorting of 5000000 integer elements was successfully completed in 1.078 seconds using 10 threads.

     

    Sorting of 5000000 integer elements was successfully completed in 4.906 seconds using 100 threads.

    Sorting of 5000000 integer elements was successfully completed in 4.844 seconds using 100 threads.

    Sorting of 5000000 integer elements was successfully completed in 5.094 seconds using 100 threads.

     

    (with the option -Xmx128m)

    Sorting of 10000000 integer elements was successfully completed in 2.844 seconds using a single thread.

    Sorting of 10000000 integer elements was successfully completed in 2.843 seconds using a single thread.

    Sorting of 10000000 integer elements was successfully completed in 2.89 seconds using a single thread.

     

    Sorting of 10000000 integer elements was successfully completed in 1.719 seconds using 2 threads.

    Sorting of 10000000 integer elements was successfully completed in 1.735 seconds using 2 threads.

    Sorting of 10000000 integer elements was successfully completed in 1.734 seconds using 2 threads.

     

    Sorting of 10000000 integer elements was successfully completed in 1.75 seconds using 3 threads.

    Sorting of 10000000 integer elements was successfully completed in 1.812 seconds using 3 threads.

    Sorting of 10000000 integer elements was successfully completed in 1.75 seconds using 3 threads.

     

    Sorting of 10000000 integer elements was successfully completed in 2.234 seconds using 10 threads.

    Sorting of 10000000 integer elements was successfully completed in 2.265 seconds using 10 threads.

    Sorting of 10000000 integer elements was successfully completed in 2.266 seconds using 10 threads.

     

    Sorting of 10000000 integer elements was successfully completed in 9.547 seconds using 100 threads.

    Sorting of 10000000 integer elements was successfully completed in 9.359 seconds using 100 threads.

    Sorting of 10000000 integer elements was successfully completed in 9.266 seconds using 100 threads.

     

     

    Forresten, dersom du prøver å sortere litt flere tall og finner at programmet ditt ikke kjører raskere med to tråder på en dobbelkjerne enn med en tråd på samme prosessor er det trolig noe galt. Det kan for eksempel være at du har synkronisert sorteringsmetoden (da kan bare en sorteringsmetode kjøre om gangen).

×
×
  • Opprett ny...