• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آیا فریم ورک ها سرعت کار را پایین می آورند؟
#31
هرچیزی بجای خودش خوبه.
یک مسئله اینه که بعضی جاها هست که هیچ فریمورکی اونطوری که شایسته هست مچ نمیشه.
مثلا من نیاز به کاربرد یک AJAX خیلی ساده داشتم که خواستم از فریمورک جاوااسکریپت Prototype برای AJAX استفاده کنم اما دیدم حجمش زیاده! یعنی خیلی هم زیاد نبود اما برای برنامهء من که فقط یک اجاکس ساده میخواست توی یک صفحه و صفحاتم خیلی کم حجم بودن حجم زیادی بود که از بقیهء فایلهای برنامه خیلی بیشتر میشد (با توجه به اینکه جاوااسکریپت مربوط به سمت کلاینت هست این فایل اول باید به مرورگر کاربر دانلود بشه که زمان دسترسی اولیه رو کاهش میده و ضمنا ممکنه مشکلی در سرعت پاسخگویی مرورگر ایجاد بکنه). سعی کردم ببینم میتونم سر و ته Prototype رو بزنم و حجمش رو برای کار خودم کم کنم یا نه که چون پیچیده بود و باید خط به خط تحلیل کد میکردیش دست کشیدم و خودم یک AJAX ساده نوشتم که بخاطر کم شدن زمان برنامه نویسی و راحتی کار حتی خروجی مورد پردازش اون اون بجای فرمت XML یا JASON فقط یک 0 و 1 ساده بود (چون من فقط میخواستم موجود بودن یک فیلد با مقدار خاص در دیتابیس رو چک کنم).

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



اوه راستی سوال تاپیک این بوده که آیا فریم ورک ها سرعت کار را پایین می آورند.
باید بگم صددرصد طبیعی هست که یک فریمورک اغلب (نه همیشه) در کل به چند دلیل از کد سفارشی (البته کد سفارشی حرفه ای که روش کار کافی شده) حجیمتر و سنگین تر هست از نظر منابع مصرفی مثل حافظه و پردازش سی پی یوی مورد نیاز و غیره.
اول اینکه فریمورک بصورت کلی نوشته میشه و دارای بهینه سازیهای جزیی همه جانبه برای یک پروژهء خاص نیست.
دوم اینکه از خیلی از بخشهای یک فریمورک در خیلی از پروژه ها ممکنه اصلا استفاده ای نمیشه اما حداقل بعضی از این بخشها در جریان کار مورد پردازش قرار میگیرن (مثل همون فایل Prototype که تمامش باید به مرورگر کاربر دانلود و در اونجا تمامش توسط موتور مفسر جاوااسکریپت تفسیر و در حافظه Load بشه، باوجود اینکه شما فقط از یک دهم از امکاناتش استفاده کنید).
مورد دوم رو میشه همون مورد اول دونست. اما از بعد دیگر میتونن متفاوت فرض بشن. چون بخشهای بیکار یک چیز هستن و بهینه نبودن موردی بخشهایی که بکار میرن یک چیز دیگه.

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

شما بطور مثال استفاده از PHP رو کنار نمیذارید و از C یا اسمبلی برای برنامه نویسی وب استفاده نمیکنید تنها به این خاطر که سرعت سی و اسمبلی از PHP بیشتر هست و منابع کمتری مصرف میکنن. پس اینطور نیست که هرجایی هرمقداری از مصرف منابع و افزایش سرعت مهم باشه و در تصمیمگیری تغییری ایجاد بکنه.
یک تعادل وجود داره. یک فرمول جامع که در اون تمام معیارها با ضریب اهمیت خودشون در واقعیت باتوجه به شرایط و نیازهای واقعی موجود وارد و محاسبه میشن.
من شاید بتونم با یک برنامهء C به 50% کاربر بیشتر روی یک سرور سرویس بدم اما اینکار رو نمیکنم. و ضمنا در عمل اکثرا سایت من نه اونقدری بار داره و نه منابع سرور در اکثر اوقات هرگز به حد اشباع میرسن؛ بنابراین اینطور بهینه سازیها تنها اتلاف وقت و انرژی برنامه نویس هست و در عمل تاثیر محسوسی نداره. اما از طرفی برنامه نویس باید از تمام محدودیت ها و روشهای بهینه سازی آگاه باشه چون نیازهای خاص همواره ممکنه پیش بیان و ضمنا این بینش برنامه نویس در کدنویسی برای نوشتن برنامه هایی که ناشیانه و غیربهینه نباشن لازم هست. اما من با بهینه سازی وسواس آمیز که بقول خیلی از برنامه نویسان دانشمند و باتجربه کار بیهوده ای هست مخالفم. بهینه سازی های موردی و خارج از ساختار طبیعی الگوریتم باید تنها جایی باشه که واقعا تاثیر مشهود و مورد نیاز داره. استفاده از هر زبان سطح بالا و هر فریمورک و غیره خودش نسبت به زبان سطح پایین تر و کد سفارشی با وسواس نوشته شده غیر بهینه تر هست، اما این در عمل فقط وجود تئوری داره و در حد اعداد قابل نادیده گیری هست.
  پاسخ
تشکر شده توسط : molana shgninc
#32
(۱۳۸۸ دى ۲۴, ۰۶:۵۸ ب.ظ)admin نوشته: ایشالا یه موضوع در مورد چگونگی نوشتن یه برنامه بزرگ توی zf ارائه بدم
من شخصا خیلی راغب و منتظر هستم
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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