Nackdel med väldigt stora tal?
Nackdel med väldigt stora tal?
Satt och filade på en tidsräknare som skall räkna upp till ca 1 timme. Ett sätt är att bara tex ta en long int variabel och stega den till ett mycket stort tal. Låt säga att variabel räknas upp till kanske 50 miljoner för att uppnå en timme.
Finns det några uppenbara faror eller ngt skumt som kan hända genom att räkna upp en variabel till såna värden?
Finns det några uppenbara faror eller ngt skumt som kan hända genom att räkna upp en variabel till såna värden?
- Swech
- EF Sponsor
- Inlägg: 4693
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Nackdel med väldigt stora tal?
Du behöver säkert en sekundräknare och kanske en minuträknare också
så bättre att ha en som räknar sekunder, när den är övre 60 så
nollställ och räkna upp minut... osv...
Det blir lättare att förstå jämfört med 49.291.332 = 58 minuter ...
Swech
så bättre att ha en som räknar sekunder, när den är övre 60 så
nollställ och räkna upp minut... osv...
Det blir lättare att förstå jämfört med 49.291.332 = 58 minuter ...
Swech
Re: Nackdel med väldigt stora tal?
Det finns inga direkta problem med det, det är ju ungefär så unix-tid fungerar, där använder man ju idag för det mesta ett 64-bitars tal.
Det är också det mest komprimerade sättet att räkna tid. Nackdelen är att det kan behövas rätt komplexa funktioner om det ska omvandlas till datum, men fördelen där är ju att man kan använda vilken kalender man vill. Om du räknar dagar, månader och år måste du hålla dig inom en och samma kalender.
Det är också det mest komprimerade sättet att räkna tid. Nackdelen är att det kan behövas rätt komplexa funktioner om det ska omvandlas till datum, men fördelen där är ju att man kan använda vilken kalender man vill. Om du räknar dagar, månader och år måste du hålla dig inom en och samma kalender.
Re: Nackdel med väldigt stora tal?
Ofan. Nä just i detta fallet handlade det bara om en enda tid. Men jag kan se problemet om man vi ha tex en riktig klockfunktion.
Då är det utrett.....
Då är det utrett.....
Re: Nackdel med väldigt stora tal?
Dessutom beror det ju på arkitekturen hur komplicerat det blir i bakgrunden. på en 8-bitars prolle blir det ju rätt o-optimalt att använda 32/64 bitars ord till exempel.
Hur lång en "long int" egentligen är beror ju också på arkitekturen och kompilatorn.
Hur lång en "long int" egentligen är beror ju också på arkitekturen och kompilatorn.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Nackdel med väldigt stora tal?
Om man vill ha en 32 bits unsigned säger man till kompilatorn att man vill ha en uint32_t. Long int är bara dumheter. Jag hade vid milennieskiftet en C-kompilator till PIC, från CCS tror jag, rena skiten. Där var en long int 16 bit och en int 8 bit.
Och för att svara på rubrikens fråga. Enda nackdelarna med långa heltal är att de tar lite mer plats och hanteras lite långsammare om man använder en processor med kort ordlängd.
Och för att svara på rubrikens fråga. Enda nackdelarna med långa heltal är att de tar lite mer plats och hanteras lite långsammare om man använder en processor med kort ordlängd.
Re: Nackdel med väldigt stora tal?
Skönt att höra. Det var lite det jag trodde på och inte en massa minnesproblem och skumma grejer
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Nackdel med väldigt stora tal?
Allt beror ju på vilken upplösning du vill ha på tiden. Behöver du bara t.ex. en minuts noggrannhet så räcker det ju med en char då du bara räknar till 60, men ska du ha nanosekundprecision så behöver du minst 42 bitar.
Att välja för stor datatyp drar ner prestandan på vissa system. På andra så tar all minnesaccess lika lång tid och typen spelar mindre roll. Dock tar det fortfarande upp mera plats. Det finns t.om. system där det är långsammare att använda för liten typ. T.ex. om minsta adresserbara enhet är 16 bitar och du använder en 8 bitars typ. Läs databladet för att se vad som gäller för just din cpu.
TL;DR.. Välj datatyp efter behov.
Att välja för stor datatyp drar ner prestandan på vissa system. På andra så tar all minnesaccess lika lång tid och typen spelar mindre roll. Dock tar det fortfarande upp mera plats. Det finns t.om. system där det är långsammare att använda för liten typ. T.ex. om minsta adresserbara enhet är 16 bitar och du använder en 8 bitars typ. Läs databladet för att se vad som gäller för just din cpu.
TL;DR.. Välj datatyp efter behov.