امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
بهینه سازی مختصر بسته های PHP و PHP core.
نویسنده پیام
Y.P.Y آفلاین
كاربر تک ستاره
*

ارسال‌ها: 50
موضوع‌ها: 27
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 5
( 56 تشکر در 29 ارسال )
ارسال: #1
بهینه سازی مختصر بسته های PHP و PHP core.
سلام،
يک سري تغييرات و بهينه سازي هاي کوچيک براي سورس/موتور PHP جهت کارايي/performance بهتر:
PHP v5
کد:
[WinUtil.c - Line #37]
[اصلي]
int php_win32_check_trailing_space(const char * path, const int path_len) {
    if (path_len < 1) {
        return 1;
    }
    if (path) {
        if (path[0] == ' ' || path[path_len - 1] == ' ') {
            return 0;
        } else {
            return 1;
        }
    } else {
        return 0;
    }
}

[تغيير يافته]
static unsigned int php_win32_check_trailing_space(const char * path, const int path_len)
{
        if(!path)
        {
            return 0;
        }

        if((path_len < 1) || (path[0] != ' ') || (path[path_len - 1] != ' '))
        {
            return 1;
        }

    return 0;
}

کد:
[Inet.c/Inet.h - Line #79]
[اصلي]
int inet_aton(const char *cp, struct in_addr *inp) {
  inp->s_addr = inet_addr(cp);

  if (inp->s_addr == INADDR_NONE) {
          return 0;
  }

  return 1;
}
PHPAPI int inet_aton(const char *cp, struct in_addr *inp);

[تغيير يافته]
unsigned int inet_aton(const char *cp, struct in_addr *inp)
{

      if((inp->s_addr= inet_addr(cp)) == INADDR_NONE)
      {
            return 0;
      }

    return 1;
}
PHPAPI unsigned int inet_aton(const char *cp, struct in_addr *inp);

کد:
[SendMail.c - Line #978]
[اصلي]
static int FormatEmailAddress(char* Buf, char* EmailAddress, char* FormatString) {
    char *tmpAddress1, *tmpAddress2;
    int result;

    if( (tmpAddress1 = strchr(EmailAddress, '<')) && (tmpAddress2 = strchr(tmpAddress1, '>'))  ) {
        *tmpAddress2 = 0; // terminate the string temporarily.
        result = snprintf(Buf, MAIL_BUFFER_SIZE, FormatString , tmpAddress1+1);
        *tmpAddress2 = '>'; // put it back the way it was.
        return result;
    }
    return snprintf(Buf, MAIL_BUFFER_SIZE , FormatString , EmailAddress );
} /* end FormatEmailAddress() */
[تغيير يافته]
static int FormatEmailAddress(char* Buf, char* EmailAddress, char* FormatString)
{
    char *tmpAddress1, *tmpAddress2;
    static unsigned int result;

        if((tmpAddress1= strchr(EmailAddress, '<')) != SUCCESS && (tmpAddress2= strchr(tmpAddress1, '>')) != SUCCESS)
        {
            return snprintf(Buf, MAIL_BUFFER_SIZE , FormatString , EmailAddress );
        }

    *tmpAddress2= 0; // terminate the string temporarily.
    result= snprintf(Buf, MAIL_BUFFER_SIZE, FormatString , tmpAddress1+1);
    *tmpAddress2= '>'; // put it back the way it was.
    return result;
} /* end FormatEmailAddress() */

البته زیاد روش فکر نکردم، تغييرات جزيي انجام دادم. ولي جا براي بهينه سازي هاي جدي تر داره.
۱۰-شهریور-۱۳۹۰, ۱۸:۳۸:۱۶
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS