Autor | Thema |
---|---|
Stefan Wimmer
Grand Master of Rocketry
Registriert seit: Aug 2000 Wohnort: Berlin Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA) Beiträge: 2398 Status: Offline |
Beitrag 110908
[06. Januar 2007 um 00:39]
Zitat: Ähmm, Malte? log != ln (Siehe http://de.wikipedia.org/wiki/Logarithmus, Stichwort "Basisumrechnung") It's the Government - it doesn't have to make sense! (B. Kaplow in r.m.r) |
Andreas Mueller
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Verein: ARGOS Beiträge: 322 Status: Offline |
Beitrag 110909
[06. Januar 2007 um 00:56]
Zitat: Naja, Malte hat doch einigermassen recht: in der Wikipedia steht: Zitat: In der libm steht log() für den natürlichen Logarithmus, der 10er-Logarithmus ist log10(), und so dürfte das auch der GCC für den AVR mit seinen Bibliotheken sehen. Und eigentlich müssten es andere C-Compiler auch so sehen. Geändert von Andreas Mueller am 06. Januar 2007 um 01:04 |
Andreas Mueller
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Verein: ARGOS Beiträge: 322 Status: Offline |
Beitrag 110910
[06. Januar 2007 um 01:01]
Zitat: Das "fast" darfst Du weglassen, es gibt meines Wissens keine Operation mit drei Operanden, also ist es immer möglich, auf eine Folge von Operationen mit zwei Operationen zu reduzieren. Dass die Bascom-Entwickler das allerdings dem Benutzer überlassen wollen überrascht mich doch etwas... |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 111145
[08. Januar 2007 um 13:59]
Zitat: Jupp! $ man log ... DESCRIPTION The log() function returns the natural logarithm of x. ... Grüße Malte PS: Abgesehen davon ist log10(exp(1)) natürlich auch konstant, was der Compiler aber leider auch nicht wegoptimiert bekommt... Geändert von hybrid am 08. Januar 2007 um 14:03 |
CharlyMai
Foren-Prediger
Registriert seit: Mär 2005 Wohnort: Fuhrberg Verein: SOLARIS-RMB e.V. (P2;T2) / AGM / TRA#21598 Beiträge: 1977 Status: Offline |
Beitrag 111177
[08. Januar 2007 um 19:15]
Da ist es aber schön zu lesen (und geht runter wie Öl) das der hochgelobte C-Compiler auch nicht alles wegoptimiert bekommt ....
viele Grüße Pierre •"Der Glaube an eine bestimmte Idee gibt dem Forscher den Rückhalt für seine Arbeit. Ohne diesen Glauben wäre er verloren in einem Meer von Zweifeln und halbgültigen Beweisen." Konrad Zuse •Konstruiere ein System, das selbst ein Irrer anwenden kann, und so wird es auch nur ein Irrer anwenden wollen. SOLARIS-RMB e.V. AGM |
Andreas Mueller
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Verein: ARGOS Beiträge: 322 Status: Offline |
Beitrag 111192
[08. Januar 2007 um 21:42]
Zitat: Woher soll der Compiler wissen können, dass weder log10 noch exp keinen Seiteneffekte haben, der Ausdruck log10(exp(1)) also schon zu Kompilationszeit ausgewertet werden kann? Richtig: er kann es nicht wissen, also kann er auch nicht wegoptimieren. Anders sieht es hingegen mit dem Ausdruck (4711-4709)/2 aus. Hier kann der Compiler das wissen, und er optimiert es auch sauber weg. Der "hochgelobte" C-Compiler vermeidet also einen Fehler, indem er log10(exp(1)) nicht wegoptimiert. Hier wäre der Entwickler gefragt, der eigentlich wissen müsste, dass er wegoptimieren kann |
Stefan Wimmer
Grand Master of Rocketry
Registriert seit: Aug 2000 Wohnort: Berlin Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA) Beiträge: 2398 Status: Offline |
Beitrag 111198
[09. Januar 2007 um 01:29]
Zitat: Klaro, aber um aus den Kurs-Board mit einerm Widerstand und einem NTC zusammen mit einem "15-Minuten-Quickhack" mal eben ein Temperaturmessgerät zu basteln kann man es mit der Optimierungs-Liebesmüh' aber auch übertreiben... It's the Government - it doesn't have to make sense! (B. Kaplow in r.m.r) |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 111221
[09. Januar 2007 um 14:19]
Hey Stefan, das sollte doch gar kein Angriff sein!
Ich hätte das überhaupt nicht auf die Reihe bekommen, aber exp(1) sprang mir gleich ins Auge und da musste ich ein bißchen rechnen Wo kommt denn die hochkomplexe Formel überhaupt her? Hast Du die hergeleitet, oder stand die in einem Buch/Datenblatt? Man sieht sehr schön, daß ein paar Minuten mehr Beschäftigung mit den Innereien einer Software u.U. Jahre aun Rechenzeit einsparen kann. Das erinnert mich an eine Situation vor sicher 15Jahren auf einem Uni-Rechner (Sun), auf dem ich per Modem (Berlin, kein 8-Minuten-Takt) eingeloggt war. Ein Prozess eines anderen Users lief schon stundenlang und ich musste auch irgendwas machen. Da wurde ich plötzlich per "talk" angepöbelt, ihm die Rechenzeit auf dem Ding nicht zu klauen, er hätte wichtige Berechnungen durchzuführen. Neugierig wie ich war schaute ich in seinem (offenen) home Verzeichnis nach und sah, was so wichtig war: Eine diskrete Fourier-Transformation, bei der er für jeden Datenpunkt und jeden Durchlauf den sinus und cosinus des jeweiligen Winkels neu berechnete. Mit einer Tabelle für die sin und cos-Werte wäre das ganze schon mal sicher um den Faktor 100 schneller geworden. Mit einer FFT vermutlich um den Faktor 10.000... Wenn ich mir heutige Software ansehe, die auf Prozessoren mit > 1000MIPS und > 1000MFlops immer noch schleicht, vermute ich, der Knabe von damals ist nicht der einzige ! Grüße Malte Geändert von hybrid am 09. Januar 2007 um 14:21 |
Stefan Wimmer
Grand Master of Rocketry
Registriert seit: Aug 2000 Wohnort: Berlin Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA) Beiträge: 2398 Status: Offline |
Beitrag 111264
[09. Januar 2007 um 20:53]
Zitat: ...so habe ich es ja auch gar nicht aufgefasst! Zitat: ...die Formel steht in jedem besseren Datenblatt oder Abhandlung zu NTCs, z.B. auch HIER. Der Effekt, mit hirnlos dahergeschriebener Software auch die schnellsten Prozessoren bei einfachsten Aufgaben in die Knie zu zwingen hat übrigens schon einen eigenen Namen bekommen: "Bloating". Der Name kommt daher, weil der heutige Programmierer nicht mehr nötig hat, sein eigenes Hirn zu strapazieren, denn er kann ja einfach mal ein paar -zig Bibliotheken dazulinken, dann ist schon irgendwo das mit drin, was er explizit gerade braucht. Festplattenplatz kostet ja heutzutage nichts mehr. Gott bewahre, dass so einer mal versucht auf embedded Systemen was zu machen. Der braucht dann einen ARM oder Coldfire mit 16MB SDRAM um eine LED zum Blinken zu bringen... Geändert von Stefan Wimmer am 09. Januar 2007 um 21:00 It's the Government - it doesn't have to make sense! (B. Kaplow in r.m.r) |