Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Optimized trigometry

Weet er iemand een methode die de berekeningen van trigometry sneller maken, mits dan wel natuurlijk een zekere foutmarge, ik werk namelijk aan een stuk code die gigantisch vertraagd door de lange berekeningen van Sinussen en Cosinussen.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
oktagon
Artikelen: 0
Berichten: 4.502
Lid geworden op: di 21 feb 2006, 12:28

Re: Optimized trigometry

Geef eens een berekening of vraagstuk op ;ik gebruikte zoiets dergelijks ook in mijn QB 45-programma's,moest wel graden omrekenen in radialen,dus de ingevoerde graden delen door 57.29578 omdat mijn wrs.amerikaanse QB-systeem werkt met radialen.

Bij het resultaat weer terugrekenen in graden!
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Optimized trigometry

Geef eens een voorbeeld van zo'n formule die je uitrekent? Want behalve programmeertruukjes kun je beter eerst op algoritmisch niveau optimaliseren. Als je 3 sinussen kunt ombouwen tot 1 is dat beter.

Als het dan nog steeds te traag is: lookup tables?
In theory, there's no difference between theory and practice. In practice, there is.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Optimized trigometry

Of probeer een andere library:

http://mathnet.opensourcedotnet.info/

Als je echt performance wilt hebben en er ook een euro of 1500 voor neer wilt tellen, dan is de ISML library wel wat:

http://www.vni.com/products/imsl/
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Optimized trigometry

Ik heb trouwens geen ervaring met C# maar kun je daar in release (optimized) mode de asm code zien die hij ervan maakt? Ik neem toch wel aan dat C# net als C++ compileert naar optimized FPU code enzo, en niet halfslachtig gaat lopen scripten/interpreten/ansi-complient-emuleren/whatever?
In theory, there's no difference between theory and practice. In practice, there is.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Optimized trigometry

Ik heb trouwens geen ervaring met C# maar kun je daar in release (optimized) mode de asm code zien die hij ervan maakt? Ik neem toch wel aan dat C# net als C++ compileert naar optimized FPU code enzo, en niet halfslachtig gaat lopen scripten/interpreten/ansi-complient-emuleren/whatever?


C# compileert naar MLIS (Microsoft Intermediate Language) code. Deze kan vervolgens door de Common Language Runtime (CLR) uitgevoerd worden. Een beetje heel erg a la Java dus.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Optimized trigometry

Oh ;)

Nou TS, dan heb ik hier een tip voor je die echt veel snelheid gaat opleveren: doe het in C++
In theory, there's no difference between theory and practice. In practice, there is.
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: Optimized trigometry

Math.Net is een heel goede library. Ik zou eerst wiskundig optimaliseren en dan kijken wat de snelheid is. Je zou uiteraard een tabel kunnen maken en opzoeken maar ik weet niet of je snelheid gaat winnen.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Aries
Artikelen: 0
Berichten: 83
Lid geworden op: ma 10 aug 2009, 20:32

Re: Optimized trigometry

Ik heb trouwens geen ervaring met C# maar kun je daar in release (optimized) mode de asm code zien die hij ervan maakt? Ik neem toch wel aan dat C# net als C++ compileert naar optimized FPU code enzo, en niet halfslachtig gaat lopen scripten/interpreten/ansi-complient-emuleren/whatever?
C# doet een geoptimaliseerde Compilatie voor die ene machine bij de eerste run van het programma, daarom is C# veel sneller dan java. zoek de benchmarks maar eens op.

Java heeft alleen JIT compilatie voor sommige dingen het wordt nooit een "echt" programma.

Als je het echt goed wil doen, schrijf een DLL in C++ en asm en gebruik deze in je programma
Math.Net is een heel goede library. Ik zou eerst wiskundig optimaliseren en dan kijken wat de snelheid is. Je zou uiteraard een tabel kunnen maken en opzoeken maar ik weet niet of je snelheid gaat winnen.
Niks is zo snel als een lookup table, maar je "mist" wel bepaalde waarden. voor sommige toepassingen maakt dat echter niks uit..

Terug naar “Informatica en programmeren”