واضح آرشیو وب فارسی:سایت ریسک: View Full Version : سرعت کدام زبان تحت دات نت بیشتره؟ am_merman0129-07-2007, 02:12 AMبا عرض پوزش از اساتید گرامی به خاطر این سئوال من چند روز پیش با یه دانشجوی کامپیوتر بحث میکردم و ایشون می فرمودند که سرعت اجرای کد های نوشته شده با #c از کد مشابهی که مثلا با Vb نوشته میشه بیشتره!!!!:13::2: من اولش کلی بهم بر خورد .:41::13: بعد گفتم که چون تحت دات نت کار میکنیم سرعت تمامی برنامه های مشابه نوشته شده تحت فریم ورک با هم برابره. ولی ما هرچی اصرار کردیم ایشون انکار کرد و میگفت که ان حرف رو از یکی از اساتید دانشگاه نقل میکنه.:18: حالا اگه یکی از اساتید منو از ابهام خارج کنه خیلی ممنون میشم. _H2_29-07-2007, 10:11 AMسلام سرعت زبانهای تحت دات نت فرقی ندارند! و به کد IL تولیدی بستگی دارد، میتوان خروجی IL هر دو را دید تا بفهمید کدام کد کمتری تولید کرده اند! در کل بیشتر به برنامه نویسی ربط دارد، در برخی موارد کد IL تولیدی در #C کمتر است و در برخی موارد کد IL تولیدی در VB حتی میگویم در مواردی امکانات داخلی #C کدی با حجم دوبرابر کد IL در VB.Net تولید میکنند. به دوست شفیقتان بگویید مثالی از کد مورد نظر در #C بزند و نه خودشان بلکه من کد معادل VB.Net اش را بدهم و کد IL نتیجه هر دو را مقایسه کنیم. (اغلب #C کارها به دلیل تکبر و عدم تسلط به VB.Net کدهای ضعیف و مشکل داری در VB.Net مینویسند (چون #C کار هستند نه VB.Net کار)) هیچ فرقی نخواهد داشت! فقط این دوستان شفیق نمی خواهند قبول کنند VB.Net قدرتمند شده و هم سطح C#.net شفیقشان است! هنوز می خواهند مثل روزهای VB 6 و VC++6 پوز زبانشان را بدهند! گرچه من خودم هم خیلی ++VC کار کردم و از آن خوشم می آید و بر قدرتش معترف هستم ولی افراط و تفریط .... (ولللش!) منظورم آن است که یک #C کار به راحتای میتواند در #C کد خوبی بنویسید ولی شاید VB.Net هم بلد باشد ولی کدی بد و گاهاً افتضاح در VB.Net مینویسید! (همانطور که من VB.Net شاید #C بلد باشم ولی نمیتوانم به خوبی یک #C کار این کار را انجام دهم!) در نتیجه با نیمچه تکبر و افتخاری که از احساس میکند از قدرت ++C به او به ارث رسیده فوراً کد خوب #C خود را با کد بد VB.Net خود مقایسه میکند و نتیجه معلوم است! bad_boy_200729-07-2007, 10:19 AMممنون H2 عزيز سرعت زبانهای تحت دات نت فرقی ندارند! و به کد IL تولیدی بستگی دارد، میتوان خروجی IL هر دو را دید تا بفهمید کدام کد کمتری تولید کرده اند! هميشه پاسخهات کامل و جامعه . يه سوال ، چطور ميشه کد IL رو مشاهده کرد ؟ و اگر امکان مشاهده اش وجود داره پس امنيت برنامه هاي نوشته شده با .net به خطر نميفته ؟(با مشاهده شدن کد) _H2_29-07-2007, 10:41 AMيه سوال ، چطور ميشه کد IL رو مشاهده کرد ؟ به فایل زیر را پیدا کنید و EXE یا DLL تان را تحویلش دهید X:Program FilesMicrosoft Visual Studio 8SDKv2.0Binildasm.exe و اگر امکان مشاهده اش وجود داره پس امنيت برنامه هاي نوشته شده با .net به خطر نميفته ؟(با مشاهده شدن کد) این که کد IL است و حالی شدنش به اندازه اسمبلی سخت است!! ولی میتوان کل یک DLL یا EXE را در دات نت به کدهای سازنده اولیش بازگرداند و همین مجدداً اثباتی است بر برابری VB.Net و C#.net ! چرا؟ شما میتوانید یک فایل EXE را که توسط یک زبان دات نتی درست شده به کدهای برنامه نویسی هر زبان دات نتی دیگر که مایل باشید ریسورس کنید!!!!! آقا عصبانی نشید! من میخوام صد سال دیگه زندگی کنم! شرمنده! من بی تقصیرم! هر چه فریاد دارید بر سر داداش بیل بزنید! :11: Shahrdar29-07-2007, 11:07 AMسلام به همه من اين سؤال خيلی وقت بود که به ذهنم رسيده بود. من يه وردپد با vb 6 سخته بودم (1 ساله پيش) 6 ماه پيش هم يه دونه با vb.net 2005 ساختم.با تعجب ديدم سرعت در vb 6 خيلی سريع تره(حتی تا 1 يا 2 ثانيه) اومدم تو c# يه پروژه ساختم متشکل از يه button که وقتی روش کليک ميکنی بياد حجمه فولدر x رو در بياره تو vb 8 هم همين کارو کردم اونی که تو c# نوشته شده بود در کل 0.30 تا 1 ثانيه سريتر کار ميکرد ولی خودم با vb راحت ترم.. البته بگم که اين کره من فقط يه آزمايش دستی وشخصی بود _H2_29-07-2007, 01:10 PMسلام من حال و حوصله کد نویسی ندارم ولی اگر مایل بودید کد VB.Net2005 را بدهید من کدی به شما میدهم که اگر سریعتر نباشد، کندتر نخواهد بود! میل شماست! اصلاً شما چگونه سرعت را در همچین برنامه ای اندازه گرفته اید؟؟؟؟ چون کار حجیمی انجام نباید داده باشید و آدم هم متوجه فرق بین 1mS و 10mS نخواهد شد؟؟؟؟؟ این قبیل تست ها معمولاً در یک حلقه یا برای یک کار سنگین قابل سنجش خواهد بود؟! Shahrdar29-07-2007, 03:09 PMخيلی ساده زمانه فشار دادن کليد و زمان اتمام رو منها کردم (همچين سؤالی از شما بعيد بود ) اين کار هم تو يه حلقه انجام دادم که اندازه حدوده 1000-1500 فايل رو باهم جمع ميزد.فکر نکنم حلقه کوتاهی باشه _H2_29-07-2007, 03:21 PMسلام خيلی ساده زمانه فشار دادن کليد و زمان اتمام رو منها کردم (همچين سؤالی از شما بعيد بود ) یک دکمه معمولی در یک برنامه Wordpad مانند، اگر عادی باشد، باید به محض فشار دادن جواب دهد، منظورم آنی است! ولی خوب گذاشتن حلقه چیز دیگری است! باز هم تاکید میکنم که اگر کد IL تولیدی برابر باشد و نسخه هر دو مورد Release نهایی باشد، سرعت برابر خواهد بود، چون در اصل کامپایلرهای VB.Net و C#.Net و Delphi.Net فقط کد متنی شما را به کد IL تبدیل میکنند و وظیفه تبدیل IL به کدنهایی را کامپایلر اصلی IL بر اهده دارد که یکتاست! کامپایلر IL نه VB.Net را میشناسد و نه C#.Net را و پارتی بازی هم نمی تواند بکند!! :31: در نتیجه فرق کامپایلرهای تحت دات نت صرفاً به خروجی IL تولیدی بستگی دارد که میشود با ان فایل exe که معرفی کردم خروجی ها را چک کرد. bad_boy_200729-07-2007, 07:37 PMممنون h2 عزيز :11: am_merman0130-07-2007, 01:14 AMاز تمامی دوستان مخصوصاٌ استاد عزیز H2 گرامی تشکر میکنم که انقدر باحوصله به این سئوال پاسخ دادند. در ضمن باید بگم من اصلاٌ دل خوشی از دوستان عزیز #C کار ندارم (البته فقط بعضی هاشون) ولی من دقیقاً متوجه منظور H2 عزیز نشدم؟!؟من مسیر زیر رو رفتم و فایل EXE مورد نظرمو بهش تحویل دادم Program FilesMicrosoft Visual Studio 8SDKv2.0Binildasm.exe حالا چه طور میشه کد این فایل رو به یک زبان دیگر تبدیل کرد.؟ اگه H2 عزیز لطف کنند و یک راهنمایی کوچیک بکنند خیلی ازش ممنون میشم. درضمن H2 بزرگوار در تاپیک دیگری امر فرمودید که سعی کنم بار آموزشی تاپیک رو پایین نیارم>>> چشم رو جفت چشمام شما هر امری دارید بفرمایید ما اطاعت میکنیم .... در ضمن به خاطر پست هام توی اون یکی تاپیک از همه دوستان مخصوصاً anvar.net گرامی و H2 عزیز بینهایت پوزش میخواهم... جهت اطلاع عرض میکنم در اسرع وقت پست های غیر مرتبط با بحث رو حذف خواهم کرد... _H2_30-07-2007, 10:08 AMسلام اولاً در مورد آن تاپیک دیگر! من اغلب جملات با رگه ای از طنز همراه است!!! و هیچگاه قصد جسارت ندارم! مخلصم تمام برنامه نویسان الی الخصوص دات نت کاران و الخصوص VB کارها هم هستیم! به نظر من C#.Net و VB.Net برادر دو قلو هیستند و دفاع از یکی دفاع از دیگری است، در سایتهای دیگر هم گفته ام، چون اگر اثبات شود مثلاً C#.Net در جایی ضعف دارد حتماً باید قبول کرد VB.Net هم ضعف دارد و بلعکس! C#.Net کارها و VB.Net کارها باید این تیپی باشند :10:! در مورد فایل مورد نظر هم بهتر است در محل نصب دات نت با سرچ خود ویندوز دنبال ildasm.exe بگردید، باید باشد! شاید نسخه VS شما کامل نیست؟! در مورد بحث سرعت هم مطلب دیگری یادم آمد!! متاسفانه هنوز بسیار میبینم که دوستان در ردوبدل کردن فایلها و پروژه های نمونه برای یک دیگر نسخه Debug را می فرستند!!!!! (چه VB کارها و چه #C کارها!!!) حتماً به مشتری بخت برگشته هم همان را تحویل میدهید!!!!! عزیزان دل بابا!!! نسخه ای که در مسیر binDebug پروژه تان تشکیل میشود برای تست و اشکال یابی است و خیلی کندتر است و بسیار حجیم تر و هر زبانی با توجه به امکانات اشکال یابی داخلی خود امکان دارد حجم و سرعت متفاوتی را ارائه کند که اصلاً معیار نیست! من از سازوکار دقیق Debug در دات نت اطلاعی ندارم ولی در زمان داس خدا بیامورز وقتی برنامه ای مثلاً با اسمبلی مینوشتیم در نسخه Debug مانند ان که در RAM تشکیل میشد بعد از هر دستور خالص زبان ماشین یک دستور INT 3 قرار میگرفت تا این امکان را بدهد که در هر نقطه دلخواه بتوان برنامه را متوقف کرد و ثبات های CPU را بررسی کرد! احتمالاً دات نت هم از چیزی شابه بهره میگیرد و بعد از اجرای هر تک دستور در نسخه Debug مقداری کد اضافه برای گزارشات و Debug راحت تر اضافه میشود!!! شما حتماً قبل از هرگونه انتقال و. تحویل و سنجش سرعت و... باید کل پروژه را در حال Release کامپایل کنید و فایلی را که مستقیماً در مسیر binRelase ساخته میشود تست کنید! حتی برای تست سرعت بهتر است خود VS را هم ببندید چون RAM زیادی میگیرد و مانع سنجش در شرایط عادی میشود و حتی گاهاً تا چند یک یا دو دقیقه بعد از بسته شدن ظاهری هنوز در داخل RAM است و در حال ذخیره و آزاد سازی منابعش است! بهرحال نسخه Relase فراموش نشود. خوش بگذره! am_merman0131-07-2007, 03:03 AMH2جان عزيز دل برادر من كه گفتم اين آدرسي را كه دادي رفتم و فايل مورد نظر رو هم پيدا كردم ولي حالا چه طور ميشه كده نوشته شده با يك زبان رو به زبان ديگه تبديل كرد؟ am_merman0131-07-2007, 03:08 AMراستي يه چيزي چند وقته ذهن منو مشغول كرده اگه سرعت و كارايي همه زبان هاي تحت فريم ورك با هم برابره پس چرا مستر بيلي يه زبان واحد ايجاد نميكنه كه انقدر هم همه باهم در نيافتند؟ چه اشكالي داره كه همه با يك زبان برنامه نويسي كار كنند؟ _H2_31-07-2007, 10:01 AMسلام ولي حالا چه طور ميشه كده نوشته شده با يك زبان رو به زبان ديگه تبديل كرد؟ احتمالاً یا مجموعه VS ناقص است یا شما کامل نصبش نکرده اید، گاهاً برای کمتر شدن حجم CD برخی از شرکتهای داخلی چیزهایی را که احساس میکنند اضافه است از CD بر میدارند!! در مورد تبدیل هم به سایت های زیر مراجعه کنید برنامه هم موجود است و اگر سرچ کنید پیدا میکنید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! راستي يه چيزي چند وقته ذهن منو مشغول كرده اگه سرعت و كارايي همه زبان هاي تحت فريم ورك با هم برابره پس چرا مستر بيلي يه زبان واحد ايجاد نميكنه كه انقدر هم همه باهم در نيافتند؟ چه اشكالي داره كه همه با يك زبان برنامه نويسي كار كنند؟ فلسفه به وجود امدن فریم ورک اصلاً همین بوده! که ما یک فضا یا محیط برنامه نویسی با تعداد زیادی کلاسس و توابع از قبل تست شده و آماده داشته باشیم که هر کس به هر زبان و سینتکس که علاقه دارد بدون آنکه چیزی از دست بدهد (چه سرعت و چه قدرت) بتواند برنامه دلخواه خود را بنویسید و مثلاً عاشق سینتکس C بودنش مانع سرعتش نشود یا عاشق سینتک Basic بودنش مانع قدرتش نشود. خود ایکروسافت هم این را صراحتاً اعلام کرده که زبان های تحت دات نت فقط در صرف سینتکس تفاوت دارند، البته بجز VC++.Net که فرق دارد، یعنی اگر VC++.Net را کنار بگذاریم بقیه مساویند. البته طبیعی است که در مواردی خاص و به صورت جزئی یک زبان عملکرد بهتری نصبت به دیگری داشته باشد و این عملکرد بهتر هم در یک سری از دستورات VB.Net مشاهده میشود و هم در C#.Net ، اما تفاوت به حدی نیست که برنامه نویسان زبان دیگر را به چالش بکشاند. am_merman0131-07-2007, 06:21 PMH2 جان باز هم مثل هميشه گل كاشتي از اين كه براي پاسخ گويي به من وقت گذاشتي بي نهايت سپاس گذارم. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 347]