Hur snabbare är uint vs float?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

Du kan lika väl fråga hur långt ett snöre är, beror helt och hållet på processor och kompilator
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

DanielM skrev: 31 maj 2021, 19:20:52
TomasL skrev: 31 maj 2021, 19:04:53
DanielM skrev: 31 maj 2021, 17:55:19 Det finns väll ingen som har mätt upp hur snabbt det är?

Känns som att denna tråd kommer bli en lång tråd. :wink:
Har mätt hastigheten med olika stora UINTar, på en MIPS. Där visade det sig att 32 bitars var snabbast, alternativt 16 bitars om man kompilerade med 16-bitars option.
Vad var skillnaden då?
Har för mig att vi postade resultaten här.
hummel
Inlägg: 2259
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hur snabbare är uint vs float?

Inlägg av hummel »

DanielM skrev: 31 maj 2021, 19:42:29 Ja, det menar jag.

Men en annan viktig fråga, är hur snabbt det går att göra 1000 iterationer i en lite större processor på ca 100 MHz.
Som andra sagt, hur långt är ett snöre.

Enklast är att skriva funktionen du vill kolla hastigheten på, sedan kan du antingen köra den på hårdvara, i en simulator eller räkna instruktioner.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

I viewtopic.php?f=43&t=69617&p=1021158&hi ... d#p1021158
Postade Sodjan ett stycke kod, skillnaden är 50% mer kod om man inte använder nativ ordlängd.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur snabbare är uint vs float?

Inlägg av DanielM »

hummel skrev: 31 maj 2021, 19:48:57
DanielM skrev: 31 maj 2021, 19:42:29 Ja, det menar jag.

Men en annan viktig fråga, är hur snabbt det går att göra 1000 iterationer i en lite större processor på ca 100 MHz.
Som andra sagt, hur långt är ett snöre.

Enklast är att skriva funktionen du vill kolla hastigheten på, sedan kan du antingen köra den på hårdvara, i en simulator eller räkna instruktioner.
Nä. Inge "Hur långt är ett snöre"-argument här. Schas! Bort med det!

Det måste väll finnas någon erfaren som kan ge ett enkel förklaring på om det går snabbt eller långsamt. Jag kräver inga specifika siffror :)

Tänk typ en matris som är 1000*200. Denna ska multipliceras med en vektor på 200. Detta lär gå långsamt på ett inbyggt system, eller hur?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

Inte nödvändigtvis, det beror ju ens definition av snabbt/långsamt.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur snabbare är uint vs float?

Inlägg av DanielM »

Långsamt för mig är beräkningshastighet på 10 sekunder.
Snabbt för mig är en beräkningshastighet på 1 sekund.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Hur snabbare är uint vs float?

Inlägg av Micke_s »

Kör du cortex M4/M7 så har du simd instruktioner också
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

Enkel matematik säger att för en PIC32 med 80 Mhz klocka bör klara 200k 8-bitars multiplikationer på runt 27 ms i teorin (om jag räknat rätt), till detta tillkommer naturligtvis indexering mm
en 8-bitars multiplikation tar maximalt 137ns
en 16 bitars multiplikation tar 88ns
och en 32bitars tar 86ns
En float tar 736ns
och en double tar 1438ns
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur snabbare är uint vs float?

Inlägg av DanielM »

Kan detta verkligen stämma? Alltså på ett ungefär?

Jag hade en process som beräknade 15*15 matriser och det gick väldigt segt. Men processorn höll på med LCD också samt två trådar som skulle köras samtidigt.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

Tiderna för resp multiplikation är jag rätt övertygad om att de stämmer väldigt bra.
Du får tänka på att alla dessa system såsom CUBEMX och allt vad de heter lägger på en väldans massa skräp, ofta lägger man in ett gömt RTOS i botten, så du får aldrig ut den råa processorkraften
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur snabbare är uint vs float?

Inlägg av DanielM »

Det tror jag inte. CubeMX är ganska tunt. Allt beror på vad man lägger dit.

Jag ska köra några simuleringar med MATLAB kod, och sedan visa vad jag ska använda för att lösa Ax=b.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Hur snabbare är uint vs float?

Inlägg av Mr Andersson »

Har du kollat på koden till STs HAL någon gång? Det är ofta flera lager med inputvalidering och "göra det enkelt för användaren"-konverteringar av olika värden innan man är framme vid koden som faktiskt gör någonting med hårdvaran.
Det skulle inte förvåna mig om det går att göra stora prestandavinster genom att skriva om koden. Men det är nästan alltid billigare att köpa kraftigare hårdvara än vad det kostar att optimera koden istället.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur snabbare är uint vs float?

Inlägg av TomasL »

DanielM skrev: 31 maj 2021, 22:29:00 Det tror jag inte. CubeMX är ganska tunt. Allt beror på vad man lägger dit.

Jag ska köra några simuleringar med MATLAB kod, och sedan visa vad jag ska använda för att lösa Ax=b.
Du skriver själv att det var två trådar och LCD-hantering, det innebär att det måste ligga ett RTOS i botten, oavsett vad du tror eller inte.
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 905
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: Hur snabbare är uint vs float?

Inlägg av mankan »

CubeMX blir så mycket kod man väljer att ha med. Det blir minimal overhead för beräkningsfunktioner i form av eventuella avbrott man önskat sig via timers och andra periferienheter.

Plita ned lite kod i Compiler Explorer och bygg för ARM och titta på assemlerkoden, koppla ihop med vad som står i databladet, räkna. Eller så stänger du dina trådar, släcker displayen och kör din kod och skriv ut exekveringstiden på displayen när beräkningen är klar.

Eller svaret på din fråga verkar vara 10 enligt https://sparklogic.ru/arduino-for-stm32 ... 2f103.html
Skriv svar