[PHP] Runtime tonen probleem

Pagina: 1
Acties:

Onderwerpen


  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Hallo

Ik heb de volgende code

code:
1
2
3
<? $start=microtime(); ?>
//pagina inhoud
<? $eind=microtime(); $rendertijd=$eind-$start; echo"$rendertijd"; ?>


Nu krijg ik als geecho-de rendertijd iets met machten (namelijk "2.2E-05"). Hoe zorg ik ervoor dat ik het getal voluit krijg in duizendste seconden?
zo?

code:
1
$rendertijd=round(($rendertijd/1000),4);


Dit werkt niet echt namelijk

hand·te·ke·ning (de ~ (v.))


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Dat staat gewoon in de manual

Intentionally left blank


  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Ik heb daar de volgende functie voor:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function microtime_diff($a,$b) {
    list($a_micro, $a_int)=explode(' ',$a);
    list($b_micro, $b_int)=explode(' ',$b);
    if ($a_int>$b_int) {
        return ($a_int-$b_int)+($a_micro-$b_micro);
    } elseif ($a_int==$b_int) {
        if ($a_micro>$b_micro) {
            return ($a_int-$b_int)+($a_micro-$b_micro);
        } elseif ($a_micro<$b_micro) {
            return ($b_int-$a_int)+($b_micro-$a_micro);
        } else {
            return 0;
        }
    } else { // $a_int<$b_int
        return ($b_int-$a_int)+($b_micro-$a_micro);
    }
}


volgens mij ooit eens van een PHP man page afgeplukt.

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Allemaal heel leuk, maar ik heb nu deze code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$time_end=microtime();
function microtime_diff($a,$b) { 
    list($a_micro, $a_int)=explode(' ',$a); 
    list($b_micro, $b_int)=explode(' ',$b); 
    if ($a_int>$b_int) { 
        return ($a_int-$b_int)+($a_micro-$b_micro); 
    } elseif ($a_int==$b_int) { 
        if ($a_micro>$b_micro) { 
            return ($a_int-$b_int)+($a_micro-$b_micro); 
        } elseif ($a_micro<$b_micro) { 
            return ($b_int-$a_int)+($b_micro-$a_micro); 
        } else { 
            return 0; 
        } 
    } else { // $a_int<$b_int 
        return ($b_int-$a_int)+($b_micro-$a_micro); 
    } 
} 
echo microtime_diff($time_start, $time_end);


Met bovenaan de page $time_start=microtime();

Maar nog steeds last van machten (E5).

HEllup

hand·te·ke·ning (de ~ (v.))


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

PHP:
1
2
3
4
<?
$mtime1 = explode(" ",microtime()); 
$starttime = $mtime1[1] + $mtime1[0];
?>


PHP:
1
2
3
4
5
<? 
$mtime2 = explode(" ",microtime());
$mtime2 = $mtime2[1] + $mtime2[0];
echo($mtime2 - $starttime); 
?>

Hf.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Kijk eens naar sprintf().

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Dark Wanderer schreef op donderdag 29 september 2005 @ 16:45:
Allemaal heel leuk, maar ik heb nu deze code
code:
1
echo microtime_diff($time_start, $time_end);
Met bovenaan de page $time_start=microtime();

Maar nog steeds last van machten (E5).

HEllup
Als je bijvoorbeeld het aantal ms als output wilt moet je er zoiets van maken:
code:
1
echo microtime_diff($time_start, $time_end) * 1000;

Maar genoeg aan 't handje genomen, vanaf hier kom je er zelf wel uit lijkt me.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Zie crisp en round().
Dark Wanderer schreef op donderdag 29 september 2005 @ 16:45:
Allemaal heel leuk, maar ik heb nu deze code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$time_end=microtime();
function microtime_diff($a,$b) { 
    list($a_micro, $a_int)=explode(' ',$a); 
    list($b_micro, $b_int)=explode(' ',$b); 
    if ($a_int>$b_int) { 
        return ($a_int-$b_int)+($a_micro-$b_micro); 
    } elseif ($a_int==$b_int) { 
        if ($a_micro>$b_micro) { 
            return ($a_int-$b_int)+($a_micro-$b_micro); 
        } elseif ($a_micro<$b_micro) { 
            return ($b_int-$a_int)+($b_micro-$a_micro); 
        } else { 
            return 0; 
        } 
    } else { // $a_int<$b_int 
        return ($b_int-$a_int)+($b_micro-$a_micro); 
    } 
} 
echo microtime_diff($time_start, $time_end);
Sick. :X Je hebt geen enkele if nodig voor dit alles...

Ik gebruik zelf deze functies:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    function Start_Time($Start_Time = 0) {
        $this->StartTime = $this->GetMicrotime($Start_Time);
    }

    function Stop_Time() {
        $this->EndTime  = $this->GetMicrotime();
        $this->Elapsed  = bcsub($this->EndTime, $this->StartTime, 3);
    }

    function GetMicrotime($Start_Time = 0)
    {
        $Start_Time = $Start_Time == 0 ? microtime() : $Start_Time;
        list($Dec, $TStamp) = explode(' ', $Start_Time);
        return bcadd($TStamp, $Dec, 3);
    }

Zoals je ziet werkt dit momenteel in een class, maar dat kun je vast zelf wel aanpassen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

[b][message=24279615,noline]Dark Wanderer schreef op donderdag 29 september 2005 @

Maar nog steeds last van machten (E5).

HEllup
Als je de manual gelezen zou hebben dan had je in een aantal comments een constructie als deze zien staan:
code:
1
return sprintf('%.16f',$mt_diff);


Vervolgens kijk je in de manual hoe sprintf en heel de printf family werkt en je kan het getal afdrukken in nagenoeg elk denkbaar formaat ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Lentje
  • Registratie: Juni 2001
  • Laatst online: 12-09 17:04
Mijn scriptje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function parse_time()   
{    
    list($usec, $sec) = explode(" ",microtime()); 
   
    return ((float)$usec + (float)$sec);    
}  

$start_parse = parse_time(); 

$end_parse = parse_time();
$parse_time = $end_parse - $start_parse;


Werkt perfect :)

[ Voor 7% gewijzigd door Lentje op 30-09-2005 00:21 ]


Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Ik gebruik nu exact wat in de handleiding staat (zie link boven) en dat werkt prima. Ik ga 't nog even in een helper-class gooien (zoiets als waar -NMe- het uitgetrokken lijkt te hebben), om het netjes af te werken.

Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Ok, ik heb het nu zover dat ik de machten kwijt ben:

code:
1
2
3
4
5
6
7
8
9
$mtime1 = explode(" ",microtime());  
$starttime = $mtime1[1] + $mtime1[0]; 

//pagina inhoud

$mtime2 = explode(" ",microtime()); 
$mtime2 = $mtime2[1] + $mtime2[0]; 
$tijd=($mtime2 - $starttime);  
echo sprintf('%.16f',$tijd);


Als result heb ik nu ziets als 0.0000350475311279
Maar is dit nu de laadtijd in microseconden of in seconden?

[ Voor 73% gewijzigd door Dark Wanderer op 30-09-2005 08:28 ]

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

Verwijderd

Dark Wanderer schreef op vrijdag 30 september 2005 @ 08:07:
Ok, ik heb het nu zover dat ik de machten kwijt ben:

code:
1
2
3
4
5
6
7
8
9
$mtime1 = explode(" ",microtime());  
$starttime = $mtime1[1] + $mtime1[0]; 

//pagina inhoud

$mtime2 = explode(" ",microtime()); 
$mtime2 = $mtime2[1] + $mtime2[0]; 
$tijd=($mtime2 - $starttime);  
echo sprintf('%.16f',$tijd);


Als result heb ik nu ziets als 0.0000350475311279
Maar is dit nu de laadtijd in microseconden of in seconden?
Seconden.

Zelf gebruik ik deze code voor de 'rendertijd'.

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
$iFirstTime = microtime(true);

// Pagina inhoud.

$iSecondTime = microtime(true);
$iFinalTime = $iSecondTime - $iFirstTime;
$iFinalTimeRounded = round($iFinalTime, 4);

echo ("Execution time: " .$iFinalTimeRounded. "sec.");
?>


Werkt goed voor mij, en dat is dus ook in seconden.

[ Voor 7% gewijzigd door Verwijderd op 30-09-2005 09:41 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Lentje schreef op vrijdag 30 september 2005 @ 00:21:
Mijn scriptje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
function parse_time()   
{    
    list($usec, $sec) = explode(" ",microtime()); 
   
    return ((float)$usec + (float)$sec);    
}  

$start_parse = parse_time(); 

$end_parse = parse_time();
$parse_time = $end_parse - $start_parse;


Werkt perfect :)
Perfect? Lijkt me niet handig om seconden bij microseconden op te tellen zonder ze goed te alignen. Of duurt een periode van 7 uur en 15 minuten bij jou ook 22 uur? ;)

* Janoz moet beter in de manual kijken |:( |:(

[ Voor 5% gewijzigd door Janoz op 30-09-2005 11:16 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Het kan ook met 2 statements...

PHP:
1
2
3
4
$exectime_start = array_sum(explode(' ', microtime()));


echo '<script>window.status = "Created in: ' , round(array_sum(explode(' ', microtime())) - exectime_start, 4) , ' seconds";</script>';
Pagina: 1