دوستان , من همین برنامه ای رو که گذاشتم و شما تست کردید توی 4 تا کامپیوتر توی شرکتمون تست کردو و روی 2 تا لب تاپ . توی بهترین حالت وب بی نصف سرعت سی رو داشت . و تو بدترین حالت سی شارب 27 برار سریعتر از وی بی بود. یعنی همش وی بی کند تر بود. ولی حالا شما دارید نتیجه عکس می گید. این چه معنی داره یعنی روی یه کامپیوتر ویبی سریعتره وی یکی دیگه سی؟
خوب حالا یه دوست دیگه هم نتیجه تست رو گذاشت و همگی دیدید که من دروغ نمی گم
سورسشم یه چندتا ضرب سادست . غروب که برم خونه براتونمی زارم
یه قضیه دیگه چرا اعدادی که می زارید اینقدر با هم اختلاف دارن یکی می گه 25 ثانیه یکی می گه 4 ثانیه
منم که تست کردم همیشه زیر 8 ثانیه بود ؟
خیلی عجیب . من که سر در نمی یارم.
این نتیجه روی کامپیوتری که الان روش هستم
مشخصات
cpu : intel dual CPU 2.00GHz
Ram : 2Gig
سی شارپ 10 مگ رو و وی بی 13 مگ رم استفاده کرده بود
آخه ینی پس چی؟؟؟
مگر میشه!!!
حافظه و پردازنده تو هر دوی این زبان ها از طریق .Net Framework کنترل می شه نه زبان برنامه نویسی . اصلا منطقی نیست که اختلاف وجود داشته باشه. حالا که اختلاف وجود داره چرا رو هر سیستمی یک جوره؟؟؟
سیستمایی که من تست کردم که همه VB بالاتر بود اما اینجوری که نشون میده جاهایی هام #C سریع تر عمل می کنه.
آقا میشه کدی که نوشتی را بگذاری ببینم چطوری محاسبه کردی؟؟؟؟ حتی اگر سورس دوتا برنامه را بگذاری هم بد نیست.
دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان
هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
دوستان این کد سی
double[] n1 = new double[11000];
double[] n2 = new double[11000];
double[] y = new double[11000];
long cun1 = 0;
long cun2 = 0;
long freq = 0;
bool d;
//[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("kernel32")]
private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);
//[System.Security.SuppressUnmanagedCodeSecurity] // We won't use this maliciously
[DllImport("kernel32")]
private void button1_Click(object sender, EventArgs e)
{
d= QueryPerformanceCounter(ref cun1);
for (int m = 1; m < 100000; m++)
for (int n = 0; n < 10000; n++)
{
n1[n] = n;
n2[n] = n;
y[n] = n1[n] * n2[n];
}
QueryPerformanceCounter(ref cun2);
QueryPerformanceFrequency(ref freq);
label1.Text = ((float)(cun2 - cun1) / freq).ToString();
}
اینم کد وی بی
Dim n1(11000), m1(11000), j(11000) As Double
Dim c1, c2, frq As Double
Dim n, m As Int32
Declare Function QueryPerformanceCounter Lib "kernel32.dll" (ByRef x As Int64) As Byte
Declare Function QueryPerformanceFrequency Lib "kernel32.dll" (ByRef x As Int64) As Byte
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
QueryPerformanceCounter(c1)
For m = 1 To 100000
For n = 0 To 10000
n1(n) = n
m1(n) = n
j(n) = n1(n) * m1(n)
Next
Next
QueryPerformanceCounter(c2)
QueryPerformanceFrequency(frq)
Label1.Text = (c2 - c1) / frq
End Sub
فقط احتمال داره که تو نمونه ای که فایل اجراییش رو براتون گذاشته بودم تعدداد اجرای حلقه for با این یه کم متفاوت باشه
اصلا یه قضیه دگه
کد من هرچی که باشه حتی اشتباه هم داشته باشه و دو تاکد یکی نباشه , باید روی سیستم های مختلف همش یکی سریعتر از دیگری باشه دیگه.
دلیل اینکه بعضی جاها سی سریعر و بعضی جاها وی بی چیه؟
من الان یک چیزی را متوجه شدم که کف کردم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
فقط رو یکی از سیستم هایی که من برنامه ای را که گذاشتی را اجرا کردم .net Framework نصب بود!!!!!!!!!!!!!!!!!
دوتای بقیه نداشتم اما بازم اجرا شد!!!!!!!!!!!!!!!!!!!!!!!!!!!
آقا چی کار کردی؟؟؟؟؟؟؟؟؟؟
مگه با چه ورژنی گار می کنی؟؟؟
دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان
هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
Visual Stdio 2008
چی شد. کسی نظری نداره؟
سلام .
به شخصه دوست ندارم وارد اینجور مسائل شم چون ریشه نداره و همه ادعاهایی که می کنین پایه نداره ولی اجازه بدین یه چیزی رو عرض کنم .
بچه هایی که دارین رو سرعت بین VB و #C بحث می کنین باید به این نکته توجه کنین که خود Microsoft میتونه در این مورد بحث کنه چون کد Windows رو داره و اگه قرار باشه برنامه ای رو تست کنه قطعا 10000 بار بهتر از شما میتونه شرایط Ram و CPU رو در یه حالت نگه داره .
اصلا آیا شما در مورد Paging رم چیزی میدونین ؟ آیا میدونین همه برنامه ها ابتدا به MSIL ( Microsoft Intermedia Language ) تبدیل شده و بعدا اجرا میشن ؟!!!
در آخر حرفام باید خدمت تک تک شما عزیزانم عرض کنم که من زمان اجرا رو در حالت exe عرض می کنم نه در حالت Debuging .
و اگه همین برنامه هایی که در دو محیط اجرا می کنین رو دو یا سه بار دیگه اجرا کنین به هیچ نتیجه ای نمیرسین چون زمانها همیشه در حالت تغییر هستن !!!
Mani_rf جوابی نداره
بلاخره شما چی فکر می کنید؟ ما اینجا کامپیوتری نداریم که .net framwork نداشته باشه . من امروز توی شرکت 5 کامپیوتر بود که با هم خریده بودن و مشخصات سخت افزاریش دقیقا عین هم بود و فقط تفاوت نرم افزاری داشتن. ویندوز همه xp sp2 بود و روی همه برنامه های سنگین Matlab , visual stdio 2008, ise نصب بود . فق هر کاربر به سلیقه خودش یه سری برنامه های کاربردی کوچیک برای خودش نصب کرده بود . خیلی جالب که توی همه این سیستمها
1) وی بی کند تر ( به جز یه دونه که اونم توی رقم سوم اعشار از سی جلو می زد)
2) این سیتم ها با این که سخت افزاری عین هم و نرم افزار های مشابه داشتن سرعت اجرای برنامه توشون خیلی متفاوت بود
آخه اصلا معقول نیت که یه سیستمی که 4 تا برنامه مثل firefox , yahoo masenger , نسبت به دیگری تغییر داشته باشه سرعتش اینقدر متفاون باشه
و جالب تر از همه اینکه توی هر 5 تا سیستم وقتی از benchmark خود matlab استفاده می کردیم سرغت ها با دقت خوبی مثل هم بود
حالا چرا دات نت این طوریه ؟؟؟؟؟؟
یکی جواب بده ؟؟؟؟
آخرین ویرایش به وسیله hossein-khoshseyar : سه شنبه 27 مرداد 1388 در 20:58 عصر
یعنی چی پایه ای نداره
درست جواب بدید
شما به سئوالات من پاسخ بدید
وقتی ما دوتا برنامه اجرایی داریم . چرا تو بعضی از سیستمها یکی و تو بعضی دیگری سریعتر اجرا می شه ؟
این قضیه اصلا ربطی به اون چیزی که شما گفتید نداره
در ضمن ما از فایل اجرایی استفاه می کنیم . و همیشه بعد از چند بار اجرای برنامه به عدد نهایی می رسیم. چون بعد از چند با راجرا برنامه cash شده و دیگه توی زمان اجرای اون تغییرات زیادی به وجود نمی یاد
لطف کنید یه جواب منطقی و درست برای این قضیه پیدا کنید
آقا من از همه دوستان هم ممنونم و هم عذر خواهی میکنم بابت تاخیرم
پس نتیجه میگیریم سرعت بین این دوتا اختلاف آنچنانی نیست که بخوایم سرش بحث کنیم
من خودم هم از اول گفتم وی بی یه نمه اگه سریعتر نباشه کندتر هم نیست .
که اغلب دوستان همین نتیجه رو بدست آوردن ... الا ایالحال همگی خسته نباشید .
دوست عزیز واسه چی برای خودت نتیجه گیری کردی
خوب حداقل چند نفری بودن که نظر عکس شما رو توی آزمایش بدست آوردن.
به نظر من مشکل از یه جایی هست که ما خبر نداریم . شاید یه خبره پیدا شد و جواب ما رو داد.
آخه مگه می شه که هر کی توی کامپیوتر خودش چک کنه و یه جواب متفاوت با بقیه بگیره؟؟؟؟
عزیز مرغ 1 پا داره دیگه ....!
sari چک کرد دیدی که
مانی هم رو دو تا سیستم چک کرد رو دوتاش وی بی سریعتر بود
منم که چک کردم ، شما هم چک کردی
!
دوستان سلام
به عنوان یک برنامه نویس #C اعتقاد دارم که دو عامل در این اختلاف سرعت ها موثر است:
1) این مساله ممکن است خنده دار به نظر برسد اما احتمال دارد که دوستان در هنگام کامپایل برنامه در قسمت configuration manager گزینه debug را انتخاب کرده باشند نه release. دقت کنید که در برنامه نویسی معیار همواره نسخه نهایی است که باید release باشد چون نسخه debug اصطلاحا دارای symbolic information می باشد. البته می دانم که برنامه نویسان این مسایل را دقت می کنند!! اما احتمال دارد یکی از دلایل اختلاف این باشد.
2) در صورت صرف نظر کردن از مورد اول باز هم اختلاف سرعت تا حدی منطقی است. درست است که در .Net همه زبان ها به زبان میانی مایکروسافت تبدیل می شوند اما فراموش نکنید .Net یک ساختار بسیار complex دارد به گونه ای که خود مایکروسافت عقیده دارد که در برخی موارد ممکن یک سری ساختارها فقط در یک زبان قابلیت انتقال به MSIL را داشته باشد!! البته این مبحث جز یکی از مباحثی است که متقاضیان مدرک MCPD مایکروسافت باید در مورد آن اطلاعاتی داشته باشند!!! و دانستن آن چندان ضروری به نظر نمی رشد!
با آرزوی موفقیت
عزیزم بازار رو داغ نکن .
اولین و آخرین سخن اینه که شما که هیچ، حتی آقای علیرضا مداح ( مدیر سایت ) هم نمیتونن وضعیت CPU و RAM رو در دو زمان مختلف یکی کنن .
حتی اگه یه برنامه کوچیک سیستمی که نه شما میدونین چیه نه من، توی سیستم اجرا بشه زمانهایی که شما بدست اوردین رو زیر سوال میبره که میبینیم که داره میبره .
لطفا در مورد Paging رم مطالعه کنید .
به نظر اختلاف وی بی و سی شارپ فقط در سرعت اجرا نیست ، سرعت اجرا تنظیماتی دارد که در بخش کامپایل اعمال میشود.
من یه جهتی که از سی شارپ بدم میآید این است که دستور زبان سی شارپ بر عکس است اما زبان وی بی مثل زبان آدمی زاد کار می کند. نمونه اش رو در تعریف یک متغیر متوجه میشوید.
در وی بی ، کلماتی مانند
end if
end sub
باعث خوانا شدن برنامه میشود اما در سی شارپ اون کروشه ها ی مسخره آدم رو گیج میکنه
البته باید بگم خیلی هم تو سی شارپ وارد نیستم و شاید اشتباه می کنم
مثل اینکه کلا موضوع بحث عوض شده
بحث سر این نیست که کدوم یکی بهتره . بحث سر سرعتش
شما خودت دو تا فایل exe رو که من گذاشتم اجرا کردی تا ببینی نتیجه چی می شه؟
خوب حال اجز من sari هم تو کامپیوترش تست کرد نتیجه ای که من گرفتم رو گرفت.
من یه سئوال پرسیدم اگه بلدی جواب بده اگه نه مجبور نیستی تو بحث شرکت کنی
من همچنان منتظر Mani_rf هستم . که جواب بده چون منطقی جواب می ده و رو هوا حرف نمی زنه .
من یکی از این حلقه ها که دوستمون گفته بود را تو دو زبان نوشتم و بر روی یک دستگاه دیگر اجرا کردم. (البته مجبور شدم .Net Framework را هم نصب کنم.مثل برنامه دوستمون بدون اون اجرا نشد!!!!) خوب نتیجه را خودتون ببینید :
من هنوز تو کفم.
هیچ دلیلی منطقی نمی توانم پیدا کنم ، دارم خول مشم.
میگم یکی از دوستان که زبانش خوبه از Microsoft بپرسه خوب. Support@Microsoft.com
دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان
هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
سر سرعت این دو زبان هم بحث کردن در حد ما نیست و از ما بر نمیاد .
من همونطور که برنامه شمارو تست کردم و نتیجه به نفع C# شد ، برنامه یکی دیگه از دوستان رو اجرا کردم و نتیجه اون برد VB.net بود .
پس بیخیال شیم
این بیلی جون می خواست بین بچه های برنامه نویس دعوا بندازه ، گرفت این C# مادر مرده رو انداخت به جونمون . مثل بختک افتاده رو زندگیمون .
من الان به خاطر همکاری تو یه پروژه مجبورم C# یاد بگیرم . آخه اونایی که داریم با هم کار میکنیم نمیتونن به ویبی سوییچ کنن .
ســـــــــــبز باشید
باشه بی خیال ولی اخه چندتا سئوال اساسی برامون به وجود اومده اونا رو چه کنیم.؟؟؟
من که پروژهام رو انجام دادم و با سی جواب گرفتم . چون همون طوری که قبلا گفته بودم با وی بی خیلی کند شد. تا پروژه بعدی هم خدا بزرگ بلاخره با یه چیزی برنامم رو می نویسم
البته از این به بعد بیشتر سعی می کنم با سی شارپ بنویسم
راستی آقای mani_rf این مفاله شما کی آماده می شه؟ بزار اون بخوونیم شاید نظرمون عوض شد.
آخرین ویرایش به وسیله hossein-khoshseyar : پنج شنبه 29 مرداد 1388 در 09:52 صبح
عزیزم، مثل اینکه اصلا متوجه نیستی ها .
مثل تو مثل این میمونه که یه بار با یه ماشینی که باکش پر از بنزین هست میری به مسافرت و به مقصد میرسی و یه بار دیگه که نصف باک پره میری و وسط راه میمونی .
نتیجه: یه بار زود میرسی یه بار دیر .
حالا میخوام اینو بگم که توی این مثال خودت میتونی بنزین رو پر کنی و هیچ وقت وسط راه نمونی ولی در کامپیوتر اینجوری نیست مگر اینکه خودت سیستم عامل رو بنویسی .
حالا تو بحث کن ولی بهت قول میدم هیشکی بجز Microsoft Programmers نمیتونه به این سوالت جواب بده .
یعنی کسی نمی تونه روی سرعت این دو بحث کنه ؟؟؟؟
بچه ها میخواین من به MicroSoft یه نامه بنویسم و از اونا بپرسیم ؟
فقط اگه همه موافقن تو آماده کردن متن نامه باید کمک کنید
سلام.
میگم فکر کنم من هم اون بالا همین را گفتم!!!! حتی آدرس ایمل مایکروسافت را هم دادم دیگه نه!!!
دوستان بخدا همه وقتم پره اما بازام دارم تو وقتای خالیم تحقیق می کنم؛ جالب ترش اینکه هرچی بیشتر می گردم بیشتر پیدا می کنم همین دیشب دو مورد جدید پیدا کردم ؛ دلم نمی خواد مطالبی که تو مقاله می نویسم اشتباه باشه یا اینکه جوری باشه که کسی فکر کنه برای کم کردن شاءن #C این مقاله را نوشتم. برای هیمن زیاد طول کشیده.راستی آقای mani_rf این مفاله شما کی آماده می شه؟ بزار اون بخوونیم شاید نظرمون عوض شد
دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان
هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
Support@MicroSoft.com ایمیل عمومی مایکروسافته که شاید یه جواب کلی بدن یا به یه مقاله های عمومی ارجاع بدن ولی مایکروسافت خودش موظف کرده که به مشکلات و سوال های MCP ها یا MCTS ها و همه اونائیکه مدارک مایکروسافت رو دارن جواب دقیق بده و حتی پیگیری هم میکنن که یه ایمیلی به غیر از ساپورته فقط باید یه متن جامع و موقر از مشکلمون که ادبیات خوبی داشته باشه بنویسیم حالا اگه دوستان تو متن فارسی یاری بکنن من میتونم به انگلیسی ترجمه بکنم و امیدوارم حرف آخرو درباره این مشکل از زبون مایکرو سافت هم بشنویم
منتظر متن یا کمکی از دوستان هستم تا سریع نامرو براشون ارسال کنیم
منم کاملا موافقم و تا جایی که بتونم کمک می کنم
دوستان لطف کنید یه سری به این تاپیک بزنید .شاید شما بتونید جواب بدید
یه جورایی به همین قضیه ربط داره
https://barnamenevis.org/showth...d=1#post785124
اصلا توی کدی که من با ویبی و سی نوشته بودم . توی هر کدوم به یه شکل متغیر رو تعریف کرده بودم . تازه متوجه شدم که این مسئله خیلی مهم
بخونید متوجه می شید چی میگم.
دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان
هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
سلام
راستش یه نکته ای در مورد سورس برنامه ها به نظرم اومد که شاید مهم نباشه اونم اینه که در هنگام کار با اعداد صحیح VB به طور پیشفرض در حالت checked هست یعنی با هر بار انتساب یا تغییر مقدار متغیر چک می کنه که Overflow رخ نده ولی C# به طور پیشفرض اینکار رو نمی کنه،بد نیست یه بار کدهای C# رو در حالت checked اجرا و نتیجه رو بررسی کنید.