ورود

View Full Version : سوال: عملکرد تایمر



mehran_337
چهارشنبه 01 مهر 1388, 15:02 عصر
با سلام
1 - تایمر تا چه حد می تواند در سرعت سیستم تاثیرگذار باشد؟
2 - چنانچه در برنامه ای تعداد تایمر مثلا به 10 عدد برسد چطور ؟
3 - آیا برنامه هایی جهت یادآوری کارها و ملاقاتهای روزانه وجود دارند از تایمر استفاده می کنند؟
4 - اگر برنامه ای برای یک اتوماسیون اداری جهت دریافت و ارسال پیام طراحی شود استفاده از تایمر علمی و اصولی است ؟
5 - وقتی کلاینتی شورتکات برنامه ای را از سرور را اجرا می کند که در آن تایمر بکار رفته آیا برای محاسبه تایمر از پردازش خود سرور استفاده می شود و یا سی پی یو کلاینت درگیر می شود ؟

با تشکر

binyaz2003
چهارشنبه 01 مهر 1388, 22:01 عصر
بصورت کلي چيزي که تجربه کردم اينه که اگر intervalزير يک دقيقه باشه باعث مشکل ميشه حالا اگر از يکي بيشتر بشه ديگه بدتر
حتما برنامه هايي هستند که استفاده ميکنند
اگر مثل ايميله که همون تايمر اما اگر مثل چت هست که winsock اونم با tcp/ip

rezaTavak
پنج شنبه 02 مهر 1388, 07:47 صبح
سلام

۱ - بستگی به سرعت سیستم و میزان پروسه‌های در حال اجرا دارد. اما در کل میزانی از سرعت را بخود اختصاص می‌دهد که در برنامه‌های زبانهای دیگر بهتر عمل می‌کند. البته در آنجا تکنیک چند پردازشی مطرح است.

۲ - اگر می‌توانید یک تایمر در _SCreen تعریف کنید و تمام کارها را در آن قرار دهید بهتر است. برای تمایز هر کار در وهله زمانی هم از case یا IF استفاده کنید.

۳ - قاعدتا استفاده میکنند. در زبانهای دیگر ممکن است از جند پردازشی استفاده کنند.

۴ - قبلا توضیح دادم

۵ - برنامه‌ای در سرور اجرا می‌شود که از طریق tcp/ip و پورت مربوطه باشد مثلا شما از ایمیل ، SQLServer ، ftp, File Sharing استفاده کنید سرور فقط در جهت دستورات فوق عمل میکند. تایمر و امثال هم روی کلاینت اجرا می‌شود.
فعلا از امکانات سروری در حد کم استفاده می‌شود و آن تصور شما که مانند پایانه و یونیکس است فعلا در دنیای امروز کاربردی ندارد. در سرورهایی که شما برای فاکس استفاده می‌کنید بیشتر بر روی گرفتن و فرستادن فایل عمل می‌شود.

mehran_337
شنبه 04 مهر 1388, 08:13 صبح
با تشکر از پاسخهای کامل و مفیدتون
چگونه می شود تایمرهایی که با interval های متفاوت است را در یک تایمر خلاصه کرد ؟

فرض کنید تایمرها شروع به کار کردند خب بخشی از پردازش را صاحب می شوند حال اگر این چرخش همچنان ادامه داشته باشد آیا بخش بیشتری اشغال می شود یا همان مقداری که تصاحب کرده ثابت می ماند؟ یعنی با گذشت زمان پردازش بیشتری استفاده می کند؟( صعودی)

rezaTavak
شنبه 04 مهر 1388, 10:31 صبح
اول کمترین را در نظر می‌گیرد و interval را بر اساس اون تنظیم میکنید. سپس با if چک میکنید که بقیه باید اجرا شوند یا نه.

مثلا فرض کنید یکی هر ثانیه باید اجرا شود و دیگری ۱۰ ثانیه یکبار پس هر ثانیه اولی اجرا میشود ولی دومی یک شمارنده دارد که هر ۱۰ ثانیه صفر میشود و اگر ده بود اجرا می‌شود.

موردی مهمی که در تایمر وجود دارد این است که باید کار کوچکی در آن گنجانیده شود مثلا فرض کنید کاری ۲ ثانیه طول بکشد و این کار هر ثانیه در تایمر چک شود آنگاه به حلقه بینهایت خواهیم رسید.

دقیقتر اینکه در کامپیوترهای فعلی X86 یک تایمر وجود دارد که هر بار توسط وقفه شماره ۸ فرا خوانده میشود البته این در داس برنامه نویسی مقیم در حافظه کاربرد داشت اما فعلا از آن به عنوان یک WM_TIMER messages یاTimer Messages (http://www.cs.iit.edu/%7Ecs351/Lectures.S04/Lecture9.ppt) استفاده می‌شود. این تایمر باعث همان چیزی می‌شود که مد نظر شماست.

حال بسته به میزان برنامه و پروسه در حال اجر در هر زمان لود سیستم فرق دارد. مثلا در مواقعی که فقط یک برنامه در حال کار است میزان آن با چند برنامه یکی نیست. یعنی با گذشت زمان صعودی نیست مگر اینکه پرداش شما باعث آن شود. اما میزان آن در شرایط مختلف یکی نیست.

jooybar
شنبه 04 مهر 1388, 12:29 عصر
البته همان if ها یا case ها که عمل کنترل را انجام میدهند اگر در یک تایمر زیاد استفاده شود, در حیطه زمان , مانند بکاربردن چند تایمر خواهد بود.(البته این نظر منه!)

binyaz2003
دوشنبه 06 مهر 1388, 22:28 عصر
نکته ديگه که به ذهنم رسيد اينه که شما به interval براي محاسبه زمان استفاده نکنيد.مثلا يک property حاوي زمان ذخيره کنيد و هر بار مقايسه بر اساس اون انجام و بروزرساني بشه.

mehran_337
سه شنبه 07 مهر 1388, 08:47 صبح
با تشکر از راهنماییه دوستان . احساس می کنم تایمر به خوبی عمل نمی کنهو بعضی تایمرها در جایی که شرط هست از شرط عبور می کنند inkey(0.1 ) گذاشتم حل شد . کلا از این کار راضی نبوده ام ولی خود برای شروع بد نبود