PDA

View Full Version : آیا مفاهیم سرعت اجرا و سرعت کامپایل در یک زبان برنامه نویسی دو مفهوم متفاوت هستند؟



amirjalili
دوشنبه 17 آبان 1389, 20:26 عصر
با سلام.
آیا دو مفهوم سرعت اجرا و سرعت کامپایل در یک زبان برنامه نویسی مفاهیم متفاوتی هستند؟
یعنی آیا سرعت اجرای یک زبان برنامه نویسی همون سرعت کامپایله؟
مثلا میگیم سرعت اجرای برنامه هایی که با زبان C نوشته میشه بیشتر از سرعت اجرای برنامه هایی هست که با جاوا نوشته میشه.
پس آیا این سرعت اجرا در جمله بالا همون سرعت کامپایل شدنه؟
سرعت اجرای یک زبان برنامه نویسی(اصلا کاری به نوع کد زدن و اینا فعلا نداریم و منظورم خود سرعت زبانه) آیا همون سرعت کامپایلش هست؟
مثلا یک زبان برنامه نویسی یک حلقه رو در 5 ثانیه اجرا میکنه و یکی دیگه همون حلقه رو در 10 ثانیه. آیا این سرعت ربط به سرعت کامپایل داره؟

pesar irooni
شنبه 22 آبان 1389, 11:44 صبح
100% متفاوتند
مثلا همین زبون c خودش چند تا کامپایلر داره که با سرعت های متفاوت کامپایل میکنند. یه کامپایلر ممکنه یه بهینه ساز تو خودش داشته باشه. اونوقت زمان کامپایلش زیاد میشه در حالی زمان اجرای کد را کمتر میکنه.
سرعت اجرا به خیلی چیزها بستگی داره از جمله خود کد.
سوالتون بیشتر تو این مایه هاست:
آیا سرعت استارت خوردن ماشین به سرعت حرکت خود ماشین بستگی داره؟
بهتر بگم:
آیا سرعت ساخته شده ماشین تو کارخونه (کامپایل) و سرعت خود ماشین (اجرا) دو مفهوم متفاوتند؟

amirjalili
شنبه 22 آبان 1389, 20:46 عصر
با تشکر از شما
خوب پس ما میتونیم با بهینه سازی کامپایلر و حتی وجود یک بهینه ساز برای سورس نوشته شده سرعت اجرای نرم افزاری رو که مثلا با جاوا نوشته شده بهتر بکنیم. درسته؟
یه سوال دیگه. سرعت استارت خوردن ماشین رو (همون سرعت کامپایل) رو چطور میشه بهتر کرد؟

pesar irooni
دوشنبه 24 آبان 1389, 11:32 صبح
سلام
100%
مثلا تو .net یه گزینه ای هست که میگه "میخوای کد رو optimize کنم؟"
اما optimizer کلا چیز گرونیه و در سطح کد سه آدرسه یا همون اسمبلی کار میکنه و الگوریتمهای جالبی هم داره، هم برای بهبود زمان و هم کاهش فضا
سرعت کامپایل دیگه دست ما نیست. اون شرکتی که کامپایلر مینویسه باید رو سرعت کامپایل کار کنه.

amirjalili
دوشنبه 24 آبان 1389, 11:46 صبح
با تشکر..
اما من مقالات زیادی رو دیدم که عنوانش optimize کردن کامپایلر جاوا بوده.
البته گویا کامپایلر جاوا به جای کد ماشین کد بایتی تولید میکنه و مفسر جاوا این کدهای بایتی رو میخونه و اجرا میکنه.
آیا کامپایلر ++c هم کد بایتی تولید میکنه؟