DMUG-Archiv 2000

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Rechnungen beschleunigen

Hallo, 

ich bin zwar nicht von Wolfram Research, aber das 

> >müssen. Allerdings ist meine Erfahrung, daß dieses Unterfangen für Mma 4
>                                                                 ^^^^^^^^^
> >praktisch nichts bringt, da offensichtlich der Kernel diese Form der
>                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >Optimierung schon selbst vornimmt.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> Vielleicht kann jemand von Wolfram Research das bestaetigen? Fuer
> meine Arbeit waere das wichtig zu wissen.


das Unsinn ist l"asst sich leicht mit

In[]:= f1 =Compile[{{x, _Real}}, Sin[x] + Sin[x]^2 - 4*x*Sin[x]^3];
       f1[[4]]

Out[]={1, 3}, 
    {95, 1, 3, 0, 0, 3, 0, 1}, (* erster Sin[] *)
    {95, 1, 3, 0, 0, 3, 0, 2}, (* zweiter Sin[] *)
    {34, 2, 2, 3}, {9, 4, 0}, 
    {95, 1, 3, 0, 0, 3, 0, 4}, (* dritter Sin[] *) 
    {34, 4, 4, 4, 5}, {19, 1, 0,  6}, {34, 6, 0, 5, 7}, {38, 7, 8}, {30,
1, 3, 8, 9}, {4, 9}}

und
In[]:= f2 = Compile[{{x, _Real}}, Module[{y = Sin[x]}, y + y^2 -
2*x*y^3]];
       f2[[4]]

Out[]={{1, 3}, {95, 1, 3, 0, 0, 3, 0, 1}, (* erster Sin[] und fertig *)
       {15, 1, 2}, {34, 2, 2, 3}, {9, 4, 0}, 
       {15, 1, 4}, {34, 4, 4, 4, 5}, 
       {19, 1, 0, 6}, {34, 6, 0, 5, 7}, 
       {38, 7, 8}, {30, 1, 3, 8, 9}, {4, 9}}


"uberpr"ufen. Ansonsten empfiehlt es sich, *immer* den erzeugten
code anzusehen ob nicht Function Aufrufe drin stehen, schnell ist
der Compilierte code nur wenn er nur Anweisungen f"ur die Pseudo-CPU
enth"alt und *keine* Function[]'s wie


In[]:=f3 = Compile[{{x, _Real}}, mySin[x] + mySin[x]^2 -
4*x*mySin[x]^3];
      f3[[4]]

Out[]={1, 3}, {26, Function[{x}, mySin[x]], 3, 0, 0, 3, 0, 1}, {26, 
    Function[{x}, mySin[x]], 3, 0, 0, 3, 0, 2}, {34, 2, 2, 3}, {9, 4,
0}, {26,
     Function[{x}, mySin[x]], 3, 0, 0, 3, 0, 4}, {34, 4, 4, 4, 5}, {19,
1, 0, 
    6}, {34, 6, 0, 5, 7}, {38, 7, 8}, {30, 1, 3, 8, 9}, {4, 9}}

Da der Compile[] so, gut wie "uberhaupt nicht dokumentiert ist, weiss
man nie
genau wann eine Funktion (wie Sin[]) einen Aufruf an eine externe
Funktion
erzeugt und wann nicht. Es gab mal, als der Compile[] Befehl eingef"uhrt
wirde
ein Tutorial auf MathSource in dem die Befehle beschrieben waren, das
ist
aber schon l"angst "uberholt und auch nicht mehr zufinden.

Gruss
  Jens


Arnd Roth wrote:
> 
> Stimmt das?
> 
> >Es kann in bestimmten Fällen hilfreich sein, das Optimize-Package von
> >mathsource zu benutzen (mathsource.wolfram.com). Die Optimierung besteht
> >dabei darin, mehrfach auftretende Ausdrücke nur einmal berechnen zu
> >müssen. Allerdings ist meine Erfahrung, daß dieses Unterfangen für Mma 4
>                                                                 ^^^^^^^^^
> >praktisch nichts bringt, da offensichtlich der Kernel diese Form der
>                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >Optimierung schon selbst vornimmt.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> Vielleicht kann jemand von Wolfram Research das bestaetigen? Fuer
> meine Arbeit waere das wichtig zu wissen.
> 
> Viele Gruesse,
> 
> Arnd
> 
> ---
> Arnd Roth
> Abteilung Zellphysiologie
> Max-Planck-Institut fuer Medizinische Forschung
> Postfach 10 38 20, D-69028 Heidelberg


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html