السلام عليكم و رحمة الله و بركاته
خطرت في بالي فكرة هذا الموضوع و قرأت من هنا و هناك الكثير عن فروقات الدالات في بي اتش بي و سأكتب الموضوع و انتم ستتفهموا المغزى منه
هل تعلم ان echo اسرع من print (معلومة اكيده)
السبب :
قمت بعمل تكرار يطبع 20000 حرف بإستخدام echo 100 مرة و print 100 مرة كانت النتيجه
كود:
echo [1ms]
print [2ms]
ايضا لأن print معقده اكثر لها استخداماتها اما echo فلا
==============================================
هل تعلم ان Mysql_fetch_assoc اسرع من Mysql_fetch_array (معلومة اكيده)
السبب:
كود PHP:
$psr = mysql_query("select * from table");
$row = mysql_fetch_array($psr);
// هذا الاستعلام يعيد لكل قيمة خانتين في المصفوفه لاحظ
// Result
Array (
=> 0 [id]
=> 0 [1]
=> ahmad [first]
=> ahmad [2]
=> ibrahim [last]
=> ibrahim )
// لاحظ الفرق بينهما هنا
$psr = mysql_query("select * from table");
$row = mysql_fetch_assoc($psr);
// Result
/*
هنا سيعيد الاستعلام فقط مصفوفه بأسماء اي ان
$row[0]
لا تعمل فقط اسماء مثل
$row['ahmad']
*/
?>
==============================================
هل تعلم ان COUNT(column_name) اسرع من mysql_num_rows (اجتهاد شخصي)
السبب:
عند استخدام Mysql_num_rows تقوم هذه الداله بقرائة جميع النتائج الحقول كلها و تخرج لك النتيجه المتوافقه مع Where او limit بمعنى انه لو الحقول تحول مليون نتيجه ستقرأ المليون و تعيد لك ربما ال 10 نتائج المتوافقة مع الشرط اما COUNT فهي تقرأ الشرط اول ثم تقوم بالحساب
==============================================
هل تعلم ان Switch اسرع من if else و لكن الفرق بسيط جدي لا يتعدى 1ms (اجتهاد شخصي)
السبب:
تمت التجربه و اظهرت النتيجه ان بإستخدام Microtime ان switch اسرع من if else
==============================================
هل تعلم ما الفرق بين (") و (') (علامات التنصيص المزدوجه و الفردية) (اجتهاد شخصي)
كود PHP:
<?
$bhappy[] = '';
$ahmad[] = "";
// المتغيير الأول اسرع من الثاني في حاله تغيير متغيير فارغ
##########################
$bhappy[] = 'abcdefghijklmnopqrst';
$ahmad[] = "abcdefghijklmnopqrst";
// المتغيير الثاني هو الاسرع عن وجود نصوص فقط
##########################
$bhappy[] = 'abc $ def $ ghi $ jklmopq';
$ahmad[] = "abc $ def $ ghi $ jklmopq";
// المتغيير الأول اسرع بكثير من الأول لأن علامات التنصيص المزدوجه تحاول البحث عن متغيير خطأ
##########################
$bhappy[] = 'abc $ def $ ghi $ jklmopq';
$ahmad[] = "abc \$ def \$ ghi \$ jklmopq";
// المتغيير الثاني اسرع بفارق بسيط جدا على الأول
?>
==============================================
هل تعلم ان
كود PHP:
for ($i=0; $i<$size; $i++)
اسرع 11 مرة من
كود PHP:
for ($i=0; $i<sizeof($x); $i++)
(معلومة اكيده)
السبب :
لأنه تمت حسابه الحجم مسبقا و ليس من ضمن ال loop
قمت بالتجربه و فعلا الفرق كان الأولى استغرقت 3ms و الثانية استغرقت 34ms
==============================================
هل تعلم ان (معلومة اكيده)
كود PHP:
while(list($key) = each($aHash)) $aHash[$key] .= "a";
اسرع اربع مرات من
كود PHP:
foreach($aHash as $key=>$val) $aHash[$key] .= "a";
و لكن الأسرع من كلاهما هو
كود PHP:
$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";
السبب (من الموقع الرسمي):
استخدم foreach فقط إذا لم تكن المعلومات او ان البيانات فيها ليست كبيره
==============================================
هل تعلم ان
كود PHP:
while(list(,$val) = each($aHash));
اسرع 4 مرات من
كود PHP:
foreach($aHash as $key=>$val);
==============================================
جميع الأمثله الي من اجتهادي الشخصي استخدمت فيها loop الف مرة و استخدمت Microtime لحسابة الفرق (انا بشر و قد اصيب و اخطىء)
هذا ما لدي حتى الآن و اتمنى الأخوان يزيدونا إن كانوا يعرفوا اي دالات تتطابق في العمل و لكن تختلف في الاداء
المصدر : www.psr.cc
بالتوفيق جميعا :nice: