مشکل در سرعت اجرای برنامه در دو سیستم
سلام دوستان
من یه برنامه نوشتم خیلی ساده با دستورات شرطی
while (1) {
if (شرط1){
cout<<"1";
}
esle
if (شرط2){
cout<<"2";
}
esle
,
.
.
.
}
این مثلا تا 50 پیش رفته
وقتی برنامه رو اجرا میکنم توو سیستم خودم اگه مثلا if های اولی درست باشه فورا مثلا خروجی رو میده دوباره while تکرارا میشه ولی وقتی شرط های بالا درست نباشه مثلا 30 تا دستور if چک میکنه سرعت خیلی کاهش پیدا میکنه مثلا 4 ثانیه میکشه . ولی این مشکل نیست مشکل اینه که روو همون سیستم یه VM زدم همون سیستم عامل برنامه رو اونجا اجرا میکنم در کسر میلی ثانیه کل حلقه while رو پیمایش میکنه و فورا خروجی رو میده بهم چه دستور if اولی باشه چه آخری توو میلی ثانیه خروجی رو میده ولی توو سیستم خودم هرچی دستورات if بیشتری رو پیمایش میکنه سرعت برنامه واسه خروجی میاد پایین نمیدونم کامل تونستم بفهمونم یا نه
سیستم اصلی :
if (شرط 1)
مدت زمان خروجی دادن برنامه 1 میلی ثانیه
.
.
.
if (شرط 30)
مدت زمان خروجی دادن برنامه 3 ثانیه
ماشین مجازی
if (شرط 1)
مدت زمان خروجی دادن برنامه 1 میلی ثانیه
.
.
.
if (شرط 30)
مدت زمان خروجی دادن برنامه 1 میلی ثانیه
با تشکر
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
سلام.
برای افزایش سرعت اجرای برنامه در برنامه هایی که if های متوالی دارن. بهتر هست از ساختار switch case و یا حداقل از else if استفاده کنید.
در مورد اجرای سریع تر برنامه در VM، اگر VM هم زمان با اجرای برنامه در سیستم اصلی در حال اجرا هست، شاید دلیل افت سرعت اختصاص منابع به VM باشه، و منابع کمتری در اختیار برنامه ی شما باشه. البته این فقط یک ایده ایی بود که به ذهنم رسید. شاید دلیل چیز دیگه ای باشه.
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
سی تا دستور if متوالی واسه پردازنده های امروزی فکر نکنم تاثیری روو سرعت داشته باشه حلقه توو در توو نیست بگم تاثیر میزاره
خیر موقع تست روو سیستم اصلی ماشین مجازی فعال نیست
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
سلام
این برنامه ساده را نذاشتید
ولی اگه از چند thread استفاده کرده باشید دقت کنید برنامه درست نوشته شده باشه
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
در حد ترد نوشتن نیست . برنامه ساده ای هست .درست نوشته شده درست هم کار میکنه فقط من موندم چرا توو سیستم اصلیم با سرعت کم ترین کار میکنه توو وی ام با سرعت بیشتر یه بار هم شد توو سیستم خودم 2 روز همینجوری با سرعت کار کرد ولی بعد دو روز باز خوابید !
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
سلام
در مورد شرظ هایی که استفاده کرده اید هم توضیح بدبد. ممکنه اشکال از اونجا باشه.
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
این یه تیکه از کد ام
void _collect()
{
int a[500];
int i=0;
COLORREF color;
COLORREF color1;
COLORREF color2;
COLORREF color3;
COLORREF color4;
COLORREF color5;
COLORREF color6;
HDC dc;
int temp ;
dc = GetDC(NULL);
ReleaseDC(NULL, dc);
while (1){
///////////////////////////1
dc = GetDC(NULL);
color1 = GetPixel(dc, 706,336);//
color2 = GetPixel(dc, 706,337);//
color3 = GetPixel(dc, 706,338); //
color4 = GetPixel(dc, 704,336); //
if (color1==16777215&&color2==16777215&&color3==16777 215&&color4!=16777215) {
cout<<"1"<<endl; temp=1;
ofstream __0("number.txt",ios::app);
__0<<1<<endl<<endl;
__0.close();
}
//////////////////////////2
dc = GetDC(NULL);
color1 = GetPixel(dc, 720,341);
color2 = GetPixel(dc, 721,341);
color3 = GetPixel(dc, 722,341);
color4 = GetPixel(dc, 720,336);
if (color1==16777215&&color2==16777215&&color3==16777 215&&color4!=16777215)
{
cout<<" "<<"2"<<endl; temp =2;
ofstream __0("number.txt",ios::app);
__0<<" "<<2<<endl<<endl;
__0.close();
}
} // ende while
}
ساختارم که مشکل داره می دونم ولی خب کار میکنه
از نظر خودم اون پیکسل هایی که قبل از هر if دریافت میکنه سرعت رو کاهش میده ولی بحث اینه که چرا روو وی ام ویر سرعت عمل برنامه بالاست ولی توو سیستم اصلی من نه !!!
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
برنامه را به این صورت اصلاح کنید ببینید درست می شه
int temp ;
HDC dc = GetDC(NULL);
if (!dc)
{
cerr << "error!";
return;
}
ofstream __0("number.txt",ios::app);
while (1){
color1 = GetPixel(dc, 706,336);//
color2 = GetPixel(dc, 706,337);//
color3 = GetPixel(dc, 706,338); //
color4 = GetPixel(dc, 704,336); //
///////////////////////////1
if (color1==16777215 && color2==16777215 && color3==16777215 && color4!=16777215){
cout<<"1"<<endl; temp=1;
__0<<1<<endl<<endl;
continue;
}
///////////////////////////2
if (color1==16777215 && color2==16777215 && color3==16777215 && color4!=16777215){
cout<<"2"<<endl; temp=2;
__0<< 2 <<endl<<endl;
continue;
}
}
__0.close();
ReleaseDC(NULL, dc);
نقل قول: مشکل در سرعت اجرای برنامه در دو سیستم
ماشین مجازی سیستمش 32 هست یا 64 بیتی ؟
سیستم عامل اصلی چی؟ 64 هست؟
میتونید با TickCount اون خطوطی رو که باعث کندی شده مشخص کنید