PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wo finde ich den code zu php-funktionen?


feuervogel
29.11.2005, 22:16:48
hallo!

da es mich zunehmend mehr interessiert, wie gewisse in php eingebettete funktionen realisiert sind: kann mir jemand sagen, wie ich rausfinden kann, wie der c-code lautet (die sourcen sind doch in c, oder?), der funktion xy beschreibt?

ich hab hier die sourcen vor mir liegen, werde da aber leider nicht fündig...

danke!

|Coding
29.11.2005, 23:16:29
Wenn Du das downgeloadete Archiv entpackt hast, findest Du eine Unterverzeichnis "ext" da findest du die PHP-Module. Unter "ext/bcmath" findest Du die Datei "bcmath.c", welche die bcmath Funktionen enthält. Bei den anderen Modulen ist es ähnlich.

feuervogel
30.11.2005, 00:00:53
prima! nur wie finde ich nun raus, welche funktion zu welchem modul gehört?

bei funktionen wie bcpow oder so ists ja noch simpel, aber zu arsort finde ich nun mal kein modul array (?)...

feuervogel
30.11.2005, 00:14:00
ah, in /ext/standard anscheinend!

feuervogel
30.11.2005, 00:50:13
interessant was man dort so liest...also ich hab jetzt die sourcen von php 5.1.1 oder was und selbst da lässt sich selbst bei so simplen dingen wie pow noch einiges verbessern, denke ich.

|Coding
30.11.2005, 18:23:31
Das solltest Du jetzt aber nicht einfach so in den Raum schreien...

feuervogel
30.11.2005, 18:54:05
Das solltest Du jetzt aber nicht einfach so in den Raum schreien...

na also ich habe gelernt, dass

pow( a , x ) = exp( x * log(a) );

ist, und da in c bei pow zuerst geprüft wird, ob x == 2 ist, und dann a mit sich selbst multipliziert wird, ist diese methode deutlich schneller.

noch viel schneller ist folgender algorithmus:

double powi( double base, int exponent) {
int negative;
double power;

negative = exponent < 0;
if( negative ) exponent = - exponent;
power = 1.0;
while( exponent ) {
if( exponent&1 ) power *= base;
exponent >>= 1;
base *= base;
}
if( negative ) return 1.0/power; else return power;

}

der allerdings nur mit ganzahligen exponenten funktioniert.

da es zudem auch deutliche unterschiede bei den verschiedensten sortieralgorithmen gibt, würde ich mir auch mal ganz gerne die sortier-funktionen anschauen...