לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 10-12-2007, 20:28
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
מבדק ותוצאות: טעינה מהירה של איברי מערך

בעקבות (ולפני) מילוא קבצי השפה שלי באיברי מערך וערכיהם, עשיתי בדיקה קטנה כדי לבדוק באיזו דרך המערך נטען מהר יותר:

דרך א':
קוד PHP:
 $arr = array(
'txt' => 'value',
'foo' => 'bar',
...
); 


דרך ב':

קוד PHP:
 $arr = array();
$arr['txt'] = 'value';
$arr['foo'] = 'bar';
... 


לאחר בדיקות מצאתי שדרך ב' מהירה יותר(בקצת), למרות שזה בכלל לא הגיוני.

אלו תוצאות הבדיקות:
דרך א':
2.78949737549E-8
דרך ב':
2.38418579102E-8

זהו תוכן הקובץ שבו ביצעתי את הבדיקות:

קוד PHP:
<?php
define
('encoding''UTF-8'true);
// Setting encoding + Header
header('Content-type: text/html; charset='.encoding);
mb_detect_order(encoding.', ISO-8859-8-I, ASCII');
mb_regex_encoding(encoding);
mb_internal_encoding(encoding);
$iniSet = array(    
                    
'mbstring.language' => 'Neutral',
                    
'mbstring.internal_encoding' => encoding,
                    
'mbstring.http_input' => encoding,
                    
'mbstring.http_output' => encoding,
                    
'mbstring.encoding_translation' => 'On',
                    
'mbstring.detect_order' => 'auto',
                    
'mbstring.substitute_character' => 'long'
                
);
foreach(
$iniSet as $k => $v)
    
ini_set($k$v);

function 
microtime_float()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}

/*
$arr['Text1'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['Text2'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextT3  45435extTextText';
$arr['Text3'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextT456456extText78987987Tex3453454tT  extTextTextTextTextText';
$arr['Text4'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['Text4767'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['T'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78789789987987TextTextText  TextTextTextText';
$arr['Te'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['Tex'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['bla'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666Te564xtTextTextTextText78987987TextTextTextTex  tTextTextText';
$arr['TaYdi'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  x74576tTextText';
$arr['strict'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['what'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
$arr['Yeah!'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666T5ext58768TextTextTextText78987987TextTextText  TextTextTextText';
$arr['word'] = 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
$arr['nlaaaaaaaaaaaaaaaaaaadfg'] = 'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaaadfg'] = 'glaaaaaaaaa66666666666666aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaadfga'] = 'glaaaaaaaaa444444444444aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaadfgaaa'] = 'glaaaaaaaaa666666666666666aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaaa'] = 'glaaaaaaaaaaaa555555555aaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaadfgnvcaaaaa'] = 'glaaaaattttttttttttttaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaacvbcvbaaaaaaa'] = 'glaaaaavcbvcfgfdgaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaacvbvcbaaaaaaa'] = 'glaaaaaagggggggggggggaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaavcbvcbaaaaaaaaaa'] = 'glaaaaaacvbvcbaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaab,mn,mnaaaaaaa'] = 'glaaaaa456546aaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaa765aaaaaaaaa'] = 'glaaaaaaaaaaa456aaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaa3534aaaaaaa'] = 'glaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaasssssssaaaaaaaaa3534aaaaaaa'] = 'gladddddddddaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaahhhhhhhhhhhha3534aaaaaaa'] = 'glaaaaaaaaaffffffffffaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaannnnnnnnnnnnnnnnaaa3534aaaaaaa'] = 'glaaaaaahhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaa';
$arr['333333333333nlaaaaaaaaaaaa3534aaaaaaa'] = 'gl444444444444444aaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['ngggggggggggglaaaaaaaaaaaa3534aaaaaaa'] = 'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';
$arr[1] = 12;
$arr[2] = 120;
$arr[3] = 2345;
$arr[4] = 3245;
$arr[5 ]= 1;
$arr[17] = 2;
$arr[20] = 3;
*/
$collectTime 0.0;
$times=1000;

for(
$i=0$i<$times ; ++$i)
{
    
$starTime = (float)microtime_float();
$arr = array(
'Text1' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'Text2' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextT3  45435extTextText',
'Text3' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextT456456extText78987987Tex3453454tT  extTextTextTextTextText',
'Text4' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'Text4767' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'T' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78789789987987TextTextText  TextTextTextText',
'Te' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'Tex' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'bla' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666Te564xtTextTextTextText78987987TextTextTextTex  tTextTextText',
'TaYdi' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  x74576tTextText',
'strict' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'what' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText',
'Yeah!' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666T5ext58768TextTextTextText78987987TextTextText  TextTextTextText',
'word' => 'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ',
'nlaaaaaaaaaaaaaaaaaaadfg' => 'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa',
'nlaaaaaaaaaaaaaaaaaaadfg' => 'glaaaaaaaaa66666666666666aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaaaadfga' => 'glaaaaaaaaa444444444444aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaadfgaaa' => 'glaaaaaaaaa666666666666666aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaaaaa' => 'glaaaaaaaaaaaa555555555aaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaadfgnvcaaaaa' => 'glaaaaattttttttttttttaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaacvbcvbaaaaaaa' => 'glaaaaavcbvcfgfdgaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaacvbvcbaaaaaaa' => 'glaaaaaagggggggggggggaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaavcbvcbaaaaaaaaaa' => 'glaaaaaacvbvcbaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaab,mn,mnaaaaaaa' => 'glaaaaa456546aaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaa765aaaaaaaaa' => 'glaaaaaaaaaaa456aaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaa3534aaaaaaa' => 'glaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'nlaaasssssssaaaaaaaaa3534aaaaaaa' => 'gladddddddddaaaaaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaahhhhhhhhhhhha3534aaaaaaa' => 'glaaaaaaaaaffffffffffaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaannnnnnnnnnnnnnnnaaa3534aaaaaaa' => 'glaaaaaahhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaa',
'333333333333nlaaaaaaaaaaaa3534aaaaaaa' => 'gl444444444444444aaaaaaaaaaaaaaaaaaaaaaaaaaa',
'ngggggggggggglaaaaaaaaaaaa3534aaaaaaa' => 'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa',
=> 12,
=> 120,
=> 2345,
=> 3245,
=> 1,
17 => 2,
20 => 3
);
    
$collectTime = (float)microtime_float() - $starTime;

}

echo 
'<br /><br />It took:'.($collectTime/$times);

?>


לידיעתכם
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 10-12-2007, 20:48
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
הצטרפתי לבדיקה
בתגובה להודעה מספר 1 שנכתבה על ידי DCD שמתחילה ב "מבדק ותוצאות: טעינה מהירה של איברי מערך"

רק שהפעם הוספתי
קוד PHP:
 unset($arr); 


וזה הקוד:
קוד PHP:
<?php
<?php
define
('encoding''UTF-8'true);
// Setting encoding + Header
header('Content-type: text/html; charset='.encoding);
mb_detect_order(encoding.', ISO-8859-8-I, ASCII');
mb_regex_encoding(encoding);
mb_internal_encoding(encoding);
$iniSet = array(    
                    
'mbstring.language' => 'Neutral',
                    
'mbstring.internal_encoding' => encoding,
                    
'mbstring.http_input' => encoding,
                    
'mbstring.http_output' => encoding,
                    
'mbstring.encoding_translation' => 'On',
                    
'mbstring.detect_order' => 'auto',
                    
'mbstring.substitute_character' => 'long'
                
);
foreach(
$iniSet as $k => $v)
    
ini_set($k$v);

function 
microtime_float()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}

/*
$arr['Text1'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['Text2'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextT3    45435extTextText';
$arr['Text3'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextT456456extText78987987Tex3453454tT    extTextTextTextTextText';
$arr['Text4'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['Text4767'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['T'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78789789987987TextTextText    TextTextTextText';
$arr['Te'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['Tex'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['bla'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666Te564xtTextTextTextText78987987TextTextTextTex    tTextTextText';
$arr['TaYdi'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    x74576tTextText';
$arr['strict'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['what'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText';
$arr['Yeah!'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666T5ext58768TextTextTextText78987987TextTextText    TextTextTextText';
$arr['word'] = 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    ';
$arr['nlaaaaaaaaaaaaaaaaaaadfg'] = 'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaaadfg'] = 'glaaaaaaaaa66666666666666aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaadfga'] = 'glaaaaaaaaa444444444444aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaadfgaaa'] = 'glaaaaaaaaa666666666666666aaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaaaaaaa'] = 'glaaaaaaaaaaaa555555555aaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaaaadfgnvcaaaaa'] = 'glaaaaattttttttttttttaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaacvbcvbaaaaaaa'] = 'glaaaaavcbvcfgfdgaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaacvbvcbaaaaaaa'] = 'glaaaaaagggggggggggggaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaavcbvcbaaaaaaaaaa'] = 'glaaaaaacvbvcbaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaab,mn,mnaaaaaaa'] = 'glaaaaa456546aaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaa765aaaaaaaaa'] = 'glaaaaaaaaaaa456aaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaaa3534aaaaaaa'] = 'glaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaasssssssaaaaaaaaa3534aaaaaaa'] = 'gladddddddddaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaaaahhhhhhhhhhhha3534aaaaaaa'] = 'glaaaaaaaaaffffffffffaaaaaaaaaaaaaaaaaa';
$arr['nlaaaaaaaaannnnnnnnnnnnnnnnaaa3534aaaaaaa'] = 'glaaaaaahhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaa';
$arr['333333333333nlaaaaaaaaaaaa3534aaaaaaa'] = 'gl444444444444444aaaaaaaaaaaaaaaaaaaaaaaaaaa';
$arr['ngggggggggggglaaaaaaaaaaaa3534aaaaaaa'] = 'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';
$arr[1] = 12;
$arr[2] = 120;
$arr[3] = 2345;
$arr[4] = 3245;
$arr[5 ]= 1;
$arr[17] = 2;
$arr[20] = 3;
*/
$collectTime 0.0;
$times=3000;

for(
$i=0$i<$times ; ++$i)
{
    
$starTime = (float)microtime_float();
$arr = array(
'Text1' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'Text2' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextT3    45435extTextText',
'Text3' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextT456456extText78987987Tex3453454tT    extTextTextTextTextText',
'Text4' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'Text4767' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'T' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78789789987987TextTextText    TextTextTextText',
'Te' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'Tex' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'bla' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666Te564xtTextTextTextText78987987TextTextTextTex    tTextTextText',
'TaYdi' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    x74576tTextText',
'strict' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'what' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTextTextTextText78987987TextTextTextTextTe    xtTextText',
'Yeah!' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666T5ext58768TextTextTextText78987987TextTextText    TextTextTextText',
'word' => 'Text2Text1TextTextTextTextText4TextTextTextText57    5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    ',
'nlaaaaaaaaaaaaaaaaaaadfg' => 'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa',
'nlaaaaaaaaaaaaaaaaaaadfg' => 'glaaaaaaaaa66666666666666aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaaaadfga' => 'glaaaaaaaaa444444444444aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaadfgaaa' => 'glaaaaaaaaa666666666666666aaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaaaaaaa' => 'glaaaaaaaaaaaa555555555aaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaaaadfgnvcaaaaa' => 'glaaaaattttttttttttttaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaacvbcvbaaaaaaa' => 'glaaaaavcbvcfgfdgaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaacvbvcbaaaaaaa' => 'glaaaaaagggggggggggggaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaavcbvcbaaaaaaaaaa' => 'glaaaaaacvbvcbaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaab,mn,mnaaaaaaa' => 'glaaaaa456546aaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaa765aaaaaaaaa' => 'glaaaaaaaaaaa456aaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaaa3534aaaaaaa' => 'glaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'nlaaasssssssaaaaaaaaa3534aaaaaaa' => 'gladddddddddaaaaaaaaaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaaaahhhhhhhhhhhha3534aaaaaaa' => 'glaaaaaaaaaffffffffffaaaaaaaaaaaaaaaaaa',
'nlaaaaaaaaannnnnnnnnnnnnnnnaaa3534aaaaaaa' => 'glaaaaaahhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaa',
'333333333333nlaaaaaaaaaaaa3534aaaaaaa' => 'gl444444444444444aaaaaaaaaaaaaaaaaaaaaaaaaaa',
'ngggggggggggglaaaaaaaaaaaa3534aaaaaaa' => 'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa',
=> 12,
=> 120,
=> 2345,
=> 3245,
=> 1,
17 => 2,
20 => 3
); 
unset(
$arr);
    
$collectTime = (float)microtime_float() - $starTime;

}

echo 
'<br /><br />It took:'.($collectTime/$times);

?>


התוצאות:
דרך א':
קוד:
1.6053517659505E-8 1.0331471761068E-8 1.7325083414714E-8 1.7642974853516E-8 1.0331471761068E-8


דרך ב'
קוד:
1.2000401814779E-8 2.0662943522135E-8 1.2636184692383E-8 2.2331873575846E-8 1.8994013468424E-8


ככה שזה לא בידיוק חד משמעי...
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 11-12-2007, 08:05
צלמית המשתמש של netaneldj
  netaneldj netaneldj אינו מחובר  
 
חבר מתאריך: 01.05.06
הודעות: 7,861
Facebook profile
מספיק ארוך?
בתגובה להודעה מספר 4 שנכתבה על ידי ישראל K שמתחילה ב "במה בדיוק היא עדיפה? הדרך..."

קוד PHP:
 for($c $c 5000 $c++){

$result .= 'ADstring3rESTstringstringstringRtgfdg'.$c.rand(2,   8).'asdaQWD3stringstringstringr t23R5#';
$result .= 'AD3rESTRtgfdg'.$c.rand(228).'asdstringstringstringstr ingstringstring stringstringstr ingstringstringstrings'.$c.'tringaQWD stringstringstringstringstringstringstring3rt23R5#  ';
$result .= 'AD3rESTRtgfdg'.$c.rand(2255).'asdstringstringstringstringstringstringaQWD3  rt string str ingstringstring23R5#';
$result .= 'AD3rESTRtgfdg'.$c.rand(-88).'asdaQstringstringstringstrin gstringstringstrinstring stringstringstrin'.$c.'gstri ngstringstringstringstringgWD3rt23R5#';
$result .= 'AD3rESTRtgfdg'.$c.rand(28).'asdaQstringstringstringstringstringstringWD3st  ringstringstringstringstringstrin'.$c.'grt23R5#';
$result .= 'AD3rESTstringstringstringRtgfdg'.$c.rand(4500).'asd astrin gstringstringstringstringstring stringstrings tringstringstringQWD3rt23R5#';
$result .= 'AD3rESstringTRtgfdg'.$c.rand(5800).'asdastringstringstringQWD 3rt2stringstringstringstringstringstringstringstri  ng3R5#';
$result .= 'AD3rEstringstringstringstringstringstringstringst  ringstringstring STRtgfdg'.$c.rand(040000).'asdaQ WDstringstringstring3rt23R5#';
}
echo 
$result

0.259533
0.283889
קוד PHP:
 for($c $c 5000 $c++)
{
echo 
'ADstring3rESTstringstringstringRtgfdg'.$c.rand(2,   8).'asdaQWD3stringstringstringr t23R5#';
echo 
'AD3rESTRtgfdg'.$c.rand(228).'asdstringstringstringstr ingstringstring stringstringstr ingstringstringstrings'.$c.'tringaQWD stringstringstringstringstringstringstring3rt23R5#  ';
echo 
'AD3rESTRtgfdg'.$c.rand(2255).'asdstringstringstringstringstringstringaQWD3  rt string str ingstringstring23R5#';
echo 
'AD3rESTRtgfdg'.$c.rand(-88).'asdaQstringstringstringstrin gstringstringstrinstring stringstringstrin'.$c.'gstri ngstringstringstringstringgWD3rt23R5#';
echo 
'AD3rESTRtgfdg'.$c.rand(28).'asdaQstringstringstringstringstringstringWD3st  ringstringstringstringstringstrin'.$c.'grt23R5#';
echo 
'AD3rESTstringstringstringRtgfdg'.$c.rand(4500).'asd astrin gstringstringstringstringstring stringstrings tringstringstringQWD3rt23R5#';
echo 
'AD3rESstringTRtgfdg'.$c.rand(5800).'asdastringstringstringQWD 3rt2stringstringstringstringstringstringstringstri  ng3R5#';
echo 
'AD3rEstringstringstringstringstringstringstringst  ringstringstring STRtgfdg'.$c.rand(040000).'asdaQ WDstringstringstring3rt23R5#';


0.506282
0.539801




ההבדל פה הוא אומנם קטן (הרי מדובר ב5,000 ריצות של הקוד) וכמו שרשמת 'להכפיל, לשלש ולהרביע' זה לא

נערך לאחרונה ע"י netaneldj בתאריך 11-12-2007 בשעה 08:16.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 11-12-2007, 13:08
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
לצערי השיטה הזאת ממש ממש לא טובה...וגם תקעה לי את האיכספלורר :/
בתגובה להודעה מספר 3 שנכתבה על ידי netaneldj שמתחילה ב "אם כבר להפוך את האשכול ל benchmarking"

כנראה הייתה תוקעת גם את FF אם לא הייתי קובע 60 איטרציות..

אני חושב שבדרך של הוספת המידע למשתנה:
קוד:
for($c = 0 ; $c < 30000 ; $c++) { $result .= $c; } echo $result;

שכחת לכלול את הזמן שלוקח ל-echo להדפיס את ה-output. ולכן הזמן היה באמת טוב משמעותית.

בעקבות התגובה של ישראל:
ציטוט:
כפי שכתבתי, בדקתי את זה בעבר בצורה מעשית והפער היה יותר ממשמועתי - לטובת הוצאת הפלט באופן מיידי.
אני לא יכול להצביע על הבבדל בין הקוד שהצעת לבין "קוד שלם של אתר", אך ראשית זאת היתה התוצאה בפועל. שנית, יתכן ובקוד שכתבת, היות ופעולות השרשור מרוכזות, יתכן שמבוצעת אופטימזיציה (בקדם-מהדר) המשפיעה על הביצועים.


עשיתי בדיקה כאשר אני מבצע פעולה אחת נוספת לאחר כל פעולה של echo או הוספת המחרוזת למשתנה.

דרך א' (עם הוספת המידע למשתנה):
קוד PHP:
 class c
{
    public 
$out='';
}
$obj = new c;

$collectTime 0.0;
$times=60;
for(
$i=0$i<$times ; ++$i)
{
    
$starTime = (float)microtime_float();
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  ;
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  ;
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText  TextTextText';
(
355/113);
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  ;
echo 
$obj->out;
    
$collectTime += (float)microtime_float() - $starTime;
}

echo 
'<br /><br />It took:'.($collectTime/$times); 


0.0215273539225

[שים לב לעניין הנוסף שבדרך א', לא חישבתי את הזמן של טעינת המחלקה]

דרך ב' (עם echo):

קוד PHP:
 $collectTime 0.0;
$times=60;
for(
$i=0$i<$times ; ++$i)
{
    
$starTime = (float)microtime_float();

echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTextTextTextText78987987TextTextTextTextTe  xtTextText';
(
355/113);
echo 
'Text2Text1TextTextTextTextText4TextTextTextText57  5666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText  ';
(
355/113);
echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa';
(
355/113);
echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';

    
$collectTime += (float)microtime_float() - $starTime;
}

echo 
'<br /><br />It took:'.($collectTime/$times); 


0.000139772891998

אני מניח שהשורה התחתונה היא, ש-echo ישיר (ללא אחסון הפלט במשתנה) יהיה עדיף יותר. בכל מערכת.

נערך לאחרונה ע"י DCD בתאריך 11-12-2007 בשעה 13:10.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 11-12-2007, 15:13
צלמית המשתמש של netaneldj
  netaneldj netaneldj אינו מחובר  
 
חבר מתאריך: 01.05.06
הודעות: 7,861
Facebook profile
חכם מצידך להדפיס את המשתנה שמאכסן את הפלט ~בתוך~ הלולאה..
בתגובה להודעה מספר 7 שנכתבה על ידי DCD שמתחילה ב "לצערי השיטה הזאת ממש ממש לא טובה...וגם תקעה לי את האיכספלורר :/"

מה שאומר שבכלל לא עשית פה כלום.

שים לב:
קוד PHP:
 $times=60
for(
$i=0$i<$times ; ++$i
{
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 echo 
'Text2Text1TextTextTextTextText4TextTextTextText  575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 echo 
'glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 echo 
'glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa';


0.001192
0.001178
0.008677
קוד PHP:
 class 

    public 
$out=''

$obj = new c
$collectTime 0.0
$times=60
for(
$i=0$i<$times ; ++$i
{
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTextTextTextText78987987TextTextTextText    TextTextText'
 (
355/113); 
 
$obj->out .='Text2Text1TextTextTextTextText4TextTextTextText    575666TextTe-90-90-089-xtTextTextText78987987TextTextTextTextTextTextText    '
 (
355/113); 
 
$obj->out .='glaaaaaaaaa77777777777777aaaaaaaaaaraaaaaaaa'
 (
355/113); 
 
$obj->out .='glaaaaaaaaafffffffffffffffffaaaaaaaaaaaaaaaaaa'  ;
}
echo 
$obj->out

0.004217
0.003616
0.004463
(כולל הגדרת המחלקה)
התוצאה כמובן לא חד משמעית, אבל עדיין ה"שיטה שלי" היא לא פחות מהירה מה"שיטה שלך".

כנראה שאצטרך להסתמך על מילתו של ישראל (או שהוא יוכל לעשות את זה פשוט ולהביא הוכחה(?))
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 13-12-2007, 21:05
  משתמש זכר hzhz hzhz אינו מחובר  
 
חבר מתאריך: 06.07.05
הודעות: 6,559
אם אנחנו כבר ברוח הבנצ'מרקים
בתגובה להודעה מספר 1 שנכתבה על ידי DCD שמתחילה ב "מבדק ותוצאות: טעינה מהירה של איברי מערך"

אז הנה בדיקה של ++i מול i=i+1
קוד PHP:
<?php
function microtime_float()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}
$c1=0//counts i++'s wins
$c2=0//counts i=i+1's wins
for ($j=0;$j<500;$j++)
{
    echo 
"loop number $j<br />";
    
//i++ loop
    
$time_start microtime_float();
    for (
$i=0;$i<1000;$i++)
    
$time_end microtime_float();
    
$time1 $time_end $time_start;
    echo 
"$time1 seconds for i++\n <br />";
    
//i=i+1 loop
    
$time_start microtime_float();
    for (
$i=0;$i<1000;$i=$i+1)
    
$time_end microtime_float();
    
$time2 $time_end $time_start;
    echo 
"$time2 seconds for i=i+1<br />";
    if (
$time1<$time2)
    {
        
$c1++;
        echo 
"i++ won<br /><br />";
    }
    if (
$time2<$time1)
    {
        
$c2++;
        echo 
"i=i+1 won<br /><br />";
    }
}
echo 
"$c1: i++'s wins<br />";
echo 
"$c2: i=i+1's wins";
?>

והתוצאות:


371: i++'s wins

129: i=i+1's wins
_____________________________________
https://www.youtube.com/watch?v=0HRGczvZINQ&noembed

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 16-12-2007, 18:22
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
חבל, זו טעות.
בתגובה להודעה מספר 14 שנכתבה על ידי hzhz שמתחילה ב "אם אנחנו כבר ברוח הבנצ'מרקים"

ראשית, הקוד שלך מדא מסורבל, כך שאפילו לבדוק אותו כדי לטעון שהוא שגוי אני לא יכול, אבל כדאי שתעשה בו קצת סדר
שנית, התוצאות הן הפוכות, ואופרטור הקידום והחיסור גם תיאורטית וגם מעשית אמור להיות מהיר יותר (לאופרטוק הקידום/חיסור יש אופטימיזציה שאין בפעולת חיבור/חיסור רגילה).

הרצתי את הקוד שלהלן מספר פעמים, ותמיד! פעולת החיבור הרגילה היתה איטית יותר.
התוצאות מאחת הפעמים:
קוד:
$i++ Take 0.039444923400879 Sec. ++$i Take 0.036900043487549 Sec. $i=$i+1 Take 0.044145107269287 Sec.

קוד המקור:
קוד PHP:
<?php

header
('Content-Type: text/plain');

$start_time array_sum(explode(' ',microtime()));
for(
$i=0$i<100000$i++);
echo 
"\n".'$i++ Take '.(array_sum(explode(' ',microtime())) - $start_time).' Sec.'."\n";

$start_time array_sum(explode(' ',microtime()));
for(
$i=0$i<100000; ++$i);
echo 
"\n".'++$i Take '.(array_sum(explode(' ',microtime())) - $start_time).' Sec.'."\n";

$start_time array_sum(explode(' ',microtime()));
for(
$i=0$i<100000$i=$i+1);
echo 
"\n".'$i=$i+1 Take '.(array_sum(explode(' ',microtime())) - $start_time).' Sec.'."\n";

?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #16  
ישן 16-12-2007, 19:42
  משתמש זכר hzhz hzhz אינו מחובר  
 
חבר מתאריך: 06.07.05
הודעות: 6,559
מה שאתה טוען לא נכון.. :S
בתגובה להודעה מספר 15 שנכתבה על ידי ישראל K שמתחילה ב "חבל, זו טעות."

האופרטור קידום (++) אכן "ניצח" ברוב המבחנים שעבר בקוד.

פלט דוגמה:
קוד:
loop number 496 0.0153470039368 seconds for i++ 0.0156350135803 seconds for i=i+1 i++ won loop number 497 0.015664100647 seconds for i++ 0.015567779541 seconds for i=i+1 i=i+1 won loop number 498 0.0153069496155 seconds for i++ 0.0156848430634 seconds for i=i+1 i++ won loop number 499 0.0154399871826 seconds for i++ 0.0155730247498 seconds for i=i+1 i++ won 440: i++'s wins 60: i=i+1's wins


טכנית מה הקוד עושה:
  • מריץ לולאה (j אינדקס) שרצה 500 פעם
    • הדפסת מספר הלולאה
    • כניסה ללולאה בעלת אינקס i שרצה 1000 פעם ובה פשוט קידום של i באמצעות האופרטור (++). נמדד זמן מתחילת הלולאה ועד לסופה וזמן זה מודפס.
    • כניסה ללולאה בעלת אינקס i שרצה 1000 פעם ובה פשוט קידום של i "ידנית" (i=i+1). נמדד זמן מתחילת הלולאה ועד לסופה וזמן זה מודפס.
    • בדיקה אם זמן ריצת הלולאה הלולאה הראשונה היה קצר יותר מהשניה או להפך וקידום מונה ה"ניצחון" של כל לולאה. הדפסת שם המנצח.
  • הדפסת כמות הניצחונות של הלולאה הראשונה (עם האופרטור ++) ושל הלולאה השניה (קידום ידני).
עריכה:


ניסיתי את הקוד שלך ותראה את התוצאה

קוד:
$i++ Take 0.0517611503601 Sec.
++$i Take 0.0341739654541 Sec.
$i=$i+1 Take 0.0503911972046 Sec.
יש לך משהו נגד Northwood 2.6 במקרה..?
_____________________________________
https://www.youtube.com/watch?v=0HRGczvZINQ&noembed


נערך לאחרונה ע"י hzhz בתאריך 16-12-2007 בשעה 19:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #21  
ישן 17-12-2007, 12:50
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 14 שנכתבה על ידי hzhz שמתחילה ב "אם אנחנו כבר ברוח הבנצ'מרקים"

שכחתם שיש עוד מצבים.

קוד:
8: i++'s wins 491: ++1's wins 0: i=i+1's wins 1: i+=1's wins



קוד PHP:
 $tests 10000;

function 
microtime_float()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}
$c1=0//counts i++'s wins
$c2=0//counts ++i's wins
$c3=0//counts i=i+1's wins
$c4=0//counts i+=i's wins
for ($j=0;$j<500;$j++)
{
    
#echo "loop number $j<br />";

    //i++ loop
    
$time_start microtime_float();
    for (
$i=0;$i<$tests;$i++);
    
$time_end microtime_float();
    
$time1 $time_end $time_start;
    
#echo "$time1 seconds for i++\n <br />";

    //++i loop
    
$time_start microtime_float();
    for (
$i=0$i<$tests; ++$i);
    
$time_end microtime_float();
    
$time2 $time_end $time_start;

    
//i=i+1 loop
    
$time_start microtime_float();
    for (
$i=0;$i<$tests;$i=$i+1);
    
$time_end microtime_float();
    
$time3 $time_end $time_start;

    
//i+=1
    
$time_start microtime_float();
    for (
$i=0;$i<$tests;$i+=1);
    
$time_end microtime_float();
    
$time4 $time_end $time_start


    
$min min($time1$time2$time3$time4);

    switch (
true) {
        case (
$min == $time1):
                
$c1++;
                break;

        case (
$min == $time2):
                
$c2++;
                break;

        case (
$min == $time3):
                
$c3++;
                break;

        case (
$min == $time4):
                
$c4++;
                break; 
    }
}
echo 
"$c1: i++'s wins\n";
echo 
"$c2: ++1's wins\n";
echo 
"$c3: i=i+1's wins\n";
echo 
"$c4: i+=1's wins\n"
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 19-12-2007, 17:58
  barakk barakk אינו מחובר  
 
חבר מתאריך: 12.07.06
הודעות: 326
בתגובה להודעה מספר 22 שנכתבה על ידי ישראל K שמתחילה ב "זה כבר הרבה יותר קריא, עכשיו..."

ציטוט:
במקור נכתב על ידי ישראל K
זה כבר הרבה יותר קריא, עכשיו קראתי את הקוד וזה נראה אכן יישום נחמד, אם כי "כבד" יותר מצורת הבדיקה הפשוטה.

רק הערה קטנה.
אני אישית הייתי מחליף את הביטוי הזה:
קוד PHP:
<?
$time_end = microtime_float();
$time3 = $time_end - $time_start;
?>

בביטוי הזה:
קוד PHP:
<?
$time3 = microtime_float() - $time_start;
?>


ברור שהקוד השני היה יותר מהיר...
פחות עבודה....

לדעתי אתם צריכים לבדוק את זה בלולאות שונות ולראות מה יותר מהיר..
סתם בשביל בכיף.

אני לא בטוח אבל לוגית נראה לי שכמה שיש פחות הסמות ככה הקוד היה יותר מהיר...
כי $X=X לוקח הרבה זמן יחסית.

יכול להיות שקוד אחד יעבוד בלולאה אחת יותר מהר מהשניה.
ואני מעדיף להשתמש בwhile מאשר for.

טעיתי במשהו?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:55

הדף נוצר ב 0.21 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר