הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 27-08-08, 00:53   # 1
Kfir.G
חבר וותיק
 
Kfir.G's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2005
הודעות: 1,059
שלח הודעה באמצעות ICO אל Kfir.G

Kfir.G לא מחובר  

למה צריך פונקציה מוכנה בשביל זה?

PHP קוד:
function getWords ($str$num$separator ' ') {
    
$count 0;
    
$len strlen($str);
    
$i 0;
    for(; 
$i $len && $count $num$i++) {
        if(
$str[$i] == $separator)
            
$count++;
    }
    return 
substr($str,0,$i);

__________________
פיג'מה
משחקים
  Reply With Quote
ישן 27-08-08, 10:00   # 2
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

ציטוט:
נכתב במקור על ידי Kfir.G צפה בהודעה
למה צריך פונקציה מוכנה בשביל זה?

PHP קוד:
function getWords ($str$num$separator ' ') {
    
$count 0;
    
$len strlen($str);
    
$i 0;
    for(; 
$i $len && $count $num$i++) {
        if(
$str[$i] == $separator)
            
$count++;
    }
    return 
substr($str,0,$i);

כי הפיתרון שהבאת איטי... הוא לוקח פי 2 זמן בבדיקה שביצעתי...
קוד:
0.60995697975159 seconds for getWords1($str, 5)
1.2931590080261 seconds for getWords2($str, 5)
PHP קוד:
<?php
ini_set
("max_execution_time"100);
$str "While I was walking under the BIG brown tree I saw a cat";
function 
getWords1($str$num$seperator ' ')
{
    return 
implode($seperatorarray_slice(explode($seperator$str), 0$num));
}


function 
getWords2 ($str$num$separator ' ')
{
    
$count 0;
    
$len strlen($str);
    
$i 0;
    for(; 
$i $len && $count $num$i++) {
        if (
$str[$i] == $separator)
            
$count++;
    }
    return 
substr($str0$i);
}

$max 100000;

$start microtime(true);
$i 0;
while (
$i $max) {
    
getWords1($str5);
    
$i++;
}
$end microtime(true);

echo (
$end $start) . " seconds for getWords1(\$str, 5)<br />";

sleep(5); //Just in case

$start microtime(true);
$i 0;
while (
$i $max) {
    
getWords2($str5);
    
$i++;
}
$end microtime(true);

echo (
$end $start) . " seconds for getWords2(\$str, 5)<br />";

?>
  Reply With Quote
ישן 27-08-08, 10:48   # 3
Kfir.G
חבר וותיק
 
Kfir.G's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2005
הודעות: 1,059
שלח הודעה באמצעות ICO אל Kfir.G

Kfir.G לא מחובר  

אני חייב לציין שהתוצאות שהצגת הפתיעו אותי.
אבל אתה חייב להבין שהשיטה שלי לוגית יעילה יותר. למה? בשיטה שלך עוברים על כל המחרוזת וכשמוצאים את המפריד מפרקים למערך. מסיבה שאני באמת צריך לברר כשמדובר במחרוזות קטנות השיטה שלך מהירה יותר אבל תיקח מחרוזות קצת יותר ארוכות
PHP קוד:
$str "While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat While I was walking under the BIG brown tree I saw a cat"

והתוצאה

קוד:
3.50309419632 seconds for getWords1($str, 5)
1.6103219986 seconds for getWords2($str, 5)
האמת שנורא מעניין אותי למה השיטה שלך יעילה יותר במחרוזות קצרות כי מבחינה לוגית זה לא מסתדר לי =\ יש לך מושג למה זה קורה?
__________________
פיג'מה
משחקים
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 14:57.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ