• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بهینه سازی حلقه ها
#1
سلام
میخواستم پیشنهادات و تجربه های شما را در مورد بهینه سازی حلقه ها بدونم.
مثلا پیشنهاد شما برای کاهش مصرف منابع در برنامه ای که شامل یک حلقه که ممکن هست چند هزار بار یک پروسه ای را تکرار کنه چی هست؟
Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط :
#2
فراخوانی توابع تویه PHP کنده...
پ شاید بحتره توی حلقه نیفته
  پاسخ
تشکر شده توسط :
#3
سلام،
میلاد جان بهتر بود توضیحات بیشتری درباره قبل از حلقه و بعد از حلقه میدادید...
مثلاً یکی از راهها استفاده از Reference یا همون & هستش.
یکی دیگه از راهها نوع حلقه هستش. مثلاً foreach, while, do while...
یکی دیگه از راهها تقسیم یک حلقه به چند حلقه هست! اینطوری از روند Still در یک حلقه هم جلوگیری میشه.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Alimokhlesi molana oia
#4
من شنیدم که for بهتر از while در کدهای معمول، صحت داره؟
  پاسخ
تشکر شده توسط :
#5
نقل قول:من شنیدم که for بهتر از while در کدهای معمول، صحت داره؟
اینجوری نمیشه قضاوت کرد. باید در یک عملیات خودت تست کنی، هر کدوم جای خودش.
ولی معمولاً برای ایجاد حلقه 2 انتخاب میشه داشت: for/foreach ----- while/do while...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : oia
#6
سلام
به عنوان مثال من یک تابع دارم که یک عملیاتی را انجام میده و موقع اجرا حدودا ۵۰۰ کیلوبایت از رم را مصرف میکنه، وقتی من اون را داخل یک حلقه قرار میدم به ازای هر بار اجرا شدن ۵۰۰ کیلوبایت به خودش اختصاص میده تا زمانی که کل حلقه اجرا بشه و پایان اسکریپت مثلا اگر این حلقه ۱۰ بار تکرار بشه چیزی حدود ۵ مگابایت رم مصرف میکنه که اگر اینو در مقیاس بالا در نظر بگیریم اصلا قابل قبول نیست.
کاری که من کردم این بود که برای هر بار اجرای حلقه اسکریپت را با ریدایرکت کردن رفرش کردم اینجوری مشکل حل میشه اما میخواستم راه حل های دیگه را بدونم و تجربیات و پیشنهادات شما را.
Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط :
#7
چرا از fork یکی از قابلیتهای نهفته php استفاده نمی کنی؟
  پاسخ
تشکر شده توسط :
#8
توضیح بیشتری میدید؟
  پاسخ
تشکر شده توسط :
#9
یک مثال داشتم که با php برای یوتیوب بود . یادم نمیاد از کجا برداشته بودم
تحت cli هم اجرا میشه
مثالی خوبی برای استفاده از fork جهت تسریع انجام اسکریپت هست
کد پی‌اچ‌پی:
<?php

ini_set
('memory_limit''1024M');
if(!(
$argv[1] && $argv[2]))
  die(
"Usage: php youtube-user.php <username> <pattern>\n");

$user $argv[1];
$pattern $argv[2];

echo 
"Attempting to download all videos by user $user matching the pattern '$pattern'\n";

$file file_get_contents('http://www.youtube.com/profile?user='.$user);
preg_match_all('!(watch\?v=[A-Za-z0-9]{11}).*?'.$pattern.'!'$file$matchesPREG_PATTERN_ORDER);
$titles array_unique($matches[1]);

$pids = array();

foreach(
$titles as $title)
{
  
$pid pcntl_fork();
  
  if(
$pid == -1) {
    die(
'could not fork');
  } else if (
$pid) {
    
// we are in the parent
    
$pids[] = $pid;
  } else {
    
// we're in the child - download the movie

    
$page file_get_contents('http://www.youtube.com/'.$title);
    
preg_match('!<title>(.*?)</title>!'$page$matches);
    echo 
'Downloading '.$matches[1]."\n";

    
preg_match('!video_id=.*&t=[^\"&]*!'$page$matches);
    
$video 'http://youtube.com/get_video?'.$matches[0];

    
$video_file file_get_contents($video);
    
$parts explode('='$title);
    
file_put_contents($parts[1].'.flv'$video_file);
    exit();
  }
}

foreach(
$pids as $pid) {
  
pcntl_waitpid($pid$status);


البته وقتی که درس برنامه نویسی همروند رو خوندم به این فکر افتادم که آیا php هم می تونه به عنوان یک زبان برنامه نویسی همروند استفاده بشه یا خیر که به این موضوع برخوردم
  پاسخ
تشکر شده توسط : Y.P.Y میلاد
#10
کد:
ini_set('memory_limit', '1024M');
یا Jesus Exclamation
وحید جان فکر نمیکنی این بیشتر فضارو باز کرده و کنترول میکنه تا کم کردن فشار یا بهینه سازی روش/انجام عملیات؟
کد:
foreach($titles as $title)
{
  $pid = pcntl_fork();
######################################
foreach($pids as $pid) {
  pcntl_waitpid($pid, $status);
}
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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