Sida 2 av 4

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 19:45:05
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

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 19:45:41
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 19:48:57
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 19:54:10
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 20:08:40
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?

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 20:12:11
av TomasL
Inte nödvändigtvis, det beror ju ens definition av snabbt/långsamt.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 20:21:29
av DanielM
Långsamt för mig är beräkningshastighet på 10 sekunder.
Snabbt för mig är en beräkningshastighet på 1 sekund.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 20:28:34
av Micke_s
Kör du cortex M4/M7 så har du simd instruktioner också

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 20:52:40
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

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 21:16:55
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 21:22:56
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

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 22:29:00
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 22:57:58
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 23:09:06
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.

Re: Hur snabbare är uint vs float?

Postat: 31 maj 2021, 23:20:15
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