αναδρομή / η php καίει κάρβουνο ?

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

αναδρομή / η php καίει κάρβουνο ?

Δημοσίευση από pimpogio » 01 Μαρ 2011 21:45

Οι κωδικες

Κώδικας: Επιλογή όλων

[test]$cat Fibo.c
#include <stdio.h>

    int fib&#40;int n&#41; &#123;
        if &#40;n <= 1&#41; return n;
        else return fib&#40;n-1&#41; + fib&#40;n-2&#41;;
    &#125;

    int main&#40;int argc,char** argv&#41; &#123;
        printf&#40;"%d",fib&#40;36&#41;&#41;;
        return 0;
   &#125;


&#91;test&#93;$cat Fibo.java
public class Fibo &#123;
    public static int fib&#40;int n&#41; &#123;
        if &#40;n <= 1&#41; return n;
        else return fib&#40;n-1&#41; + fib&#40;n-2&#41;;
    &#125;

    public static void main&#40;String&#91;&#93; args&#41; &#123;
            System.out.print&#40;fib&#40;36&#41;&#41;;
   &#125;
&#125;


&#91;test&#93;$cat Fibo.php
<?php

    function fib&#40;$n&#41; &#123;
        if &#40;$n <= 1 &#41; return $n;
        else return fib&#40;$n-1&#41; + fib&#40;$n-2&#41;;
    &#125;

echo fib&#40;36&#41;;

?>

Τα αποτελέσματα

Κώδικας: Επιλογή όλων

&#91;test&#93;$time ./Fibo
14930352
real    0m0.321s
user    0m0.320s
sys     0m0.000s
&#91;test&#93;$time java Fibo
14930352
real    0m0.541s
user    0m0.544s
sys     0m0.020s
&#91;test&#93;$time php5-cgi Fibo.php
X-Powered-By&#58; PHP/5.3.5-1
Content-type&#58; text/html

14930352
real    0m47.060s
user    0m47.031s
sys     0m0.028s
&#91;test&#93;$
Μπορει καποιος να εξηγησει γιατι ειναι 100 φορες περιπου ποιο αργή η php ?
Εδω δεν προκειτε περι μικρης διαφορας η διαφορα ειναι ταξεις μεγεθους

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

αναδρομή / η php καίει κάρβουνο ?

Δημοσίευση από fafos » 01 Μαρ 2011 22:33

poios exypnos efeiaxe authn thn function? to oti einai pio argh h php apo alles glosses to gnorizoume.. alla oxi kai 100 fores re megale.. kai den einai aparaitho na trexei thn idia function se oles tis glosses.. yparxoun kai oi "greek ways":

Κώδικας: Επιλογή όλων

<?php
function fib&#40;$n&#41; 
&#123;
   for&#40; $l = array&#40;1,1&#41;, $i = 2, $x = 0; $i < $n; $i++ &#41;
   &#123;
        $l&#91;&#93; = $l&#91;$x++&#93; + $l&#91;$x&#93;;
   &#125;              
   return $l;
&#125; 


$n = 36;
$t = fib&#40;$n&#41;;

$arr = $n - 1;
echo $t&#91;$arr&#93;;

?>
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

αναδρομή / η php καίει κάρβουνο ?

Δημοσίευση από pimpogio » 01 Μαρ 2011 23:11

εγω λεω συγκεκριμενα για την αναδρομη...
σαφως και αμα το κανεις χωρις αναδρομη γινετε πολυ γρηγοροτερο οχι μονο στην php αλλα σε ολες τις γλωσσες...

Στην php πως κανεις σωστα προσθεση των παρακατω αριθμων?

Κώδικας: Επιλογή όλων

<?php
$sum=0.999999999999994 +  0.000000000000001;
echo "$sum\n";
?>
το σωστο αποτελεσμα ειναι: 0.999999999999995

Κώδικας: Επιλογή όλων

&#91;test&#93;$java Sum
0.999999999999995
&#91;test&#93;$php-cgi Sum.php
X-Powered-By&#58; PHP/5.3.5-1
Content-type&#58; text/html

1

&#91;test&#93;$

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

αναδρομή / η php καίει κάρβουνο ?

Δημοσίευση από fafos » 01 Μαρ 2011 23:45

kai poion endiaferoun oi peiramatikes sou anadromes? h php den feiaxthke gia na grafei o kathenas oti tou katevei h oti emathe apo alles glosses..

ti praksh einai auth? computeraki tha thn kaneis thn php?

Κώδικας: Επιλογή όλων

$sum = sprintf&#40;"%0.15f", 0.999999999999994 + 0.000000000000001&#41;;
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

αναδρομή / η php καίει κάρβουνο ?

Δημοσίευση από pimpogio » 02 Μαρ 2011 00:19

ωραιος!!!
Δεν περιμενα οτι λυνοτανε τοσο απλα...
εισαι master!!!

edit---
αυτο παλι δε παιζει...

Κώδικας: Επιλογή όλων

<?php
$sum = sprintf&#40;"%0.40f", 0.99999999999999999999999999994 +  0.00000000000000000000000000001&#41;;
echo "$sum\n";
?>


&#91;test&#93;$java Sum
0.99999999999999999999999999995
&#91;test&#93;$php-cgi Sum.php
X-Powered-By&#58; PHP/5.3.5-1
Content-type&#58; text/html

1.0000000000000000000000000000000000000000

&#91;test&#93;$

<?php
$a = 0.9999999999999994;
$b = sprintf&#40;"%0.50f", 0.9999999999999994 &#41;;
echo "$a\n";
echo "$b\n";
?>
Εχει πακετο μαθηματικων η php ωστε να παιζει σωστα τους αριθμους ?

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης