ایجاد تایمر در جاوا و حدث زدن مدت زمان اجرای برنامه

java

#1

سلام دوستان
من یه برنامه نوشتم که البته هنوز کامل نیست ولی کاری که این برنامه میکنه اینه که اعداد خیلی بزرگ مثلا 100 رقمی رو داخل یه آرایه ذخیره میکنه و روشون عملیات جمع و ضرب و توان و تفریق رو مثل ما انسان ها انجام میده
برای مثال برای جمع دو عدد 100 رقمی اول میاد یکان هارو باهم جمع میکنه حاصل اگه کم تر از 9 بود میریزه تو عنصر مربوط به یکان های آرایه result اگه بیشتر بود، 10 تا ازش کم میکنه بعد میریزه تو result و البته به عنصور دهگان یکی از آرایه های دو عدد یه واحد اضاف میکنه
و همین طور برای ضرب و تفریق و توان که تکرار چند بار ضرب هست دقیقا مثل یک انسان عملیات هارو انجام میده
حالا برای تفریق و جمع مشکلی وجود نداره و اعداد با ارقام بسیار زیاد رو در کسری از ثانیه انجام میده ولی توی ضرب و به خصوص توان ممکنه 2 به توان 7 تا 9 چند دقیقه طول بکشه محاسباتش
من میخوام برنامم یه جوری پیش بینی کنه که کاربر اعدادی که وارد کرده برای این که مثلا عدد اول رو به توان عدد دوم برسونه چه قدر طول میکشه تا عملیات روشون انجام بشه
و یک ثانیه شمار هم شروع کنه از 0 بشمره
مثلا توی winrar موقع اکسترکت یه همیچین چیزی هست
یه زمان باقی مونده داره
یه زمان که میگه چند دقیقه هست که داره اکسترکت انجام میشه


#2

از لحاظ عملی این کار غیر ممکن هست. اما می شه یه حدس هایی زد ولی در اکثر اوقات اشتباه خواهد بود.
دو روشی که به نظر من باهاش می شه حدس زد:
۱. هر محاسبه رو به تعدادی عمل کرد تبدیل کنی که زمان حدودیشون رو می دونی ( و یا بهتر اینکه به عملکرد های اتمی بشکونیشون )
۲. قبل از آماده شدن برنامه به قبول عدد یه سری تست انجام بدی و زمانشون رو اندازه بگیری. و از روی زمان اونها بقیه رو حدس بزنی.


#3

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

به نظرم اگر این روال رو یک تحقیق بکنید به نتیجه ای برسید ( بر اساس شبکه عصبی )


#4

این روش هم کارساز نخواهد بود. چون هر پروسس مقدار مشخصی زمان پردازنده در هر سایکل scheduler خواهد داشت و این زمان در هر سایکل متفاوت هست و به فاکتور های زیادی بستگی داره مثل load فعلی، niceness پروسس جاری و پروسس های دیگه و … که همه اینا باعث می شن پروسس بطور غیر قابل پیش بینی برای مدت زمان غیر قابل پیش بینی به خواب بره. این بازه ها بسیار کوچیک هستند اما رسما محاسبه دقیق رو خراب می کنند


#5

خیلی عوامل درگیر هست و نمیتونه دقیق باشه