صفحه 3 از 3 اولاول 123
نمایش نتایج 81 تا 108 از 108

نام تاپیک: وی بی .نت یا ..... ؟

  1. #81
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط mike مشاهده تاپیک
    سلام
    راستش یه نکته ای در مورد سورس برنامه ها به نظرم اومد که شاید مهم نباشه اونم اینه که در هنگام کار با اعداد صحیح VB به طور پیشفرض در حالت checked هست یعنی با هر بار انتساب یا تغییر مقدار متغیر چک می کنه که Overflow رخ نده ولی C#‎ به طور پیشفرض اینکار رو نمی کنه،بد نیست یه بار کدهای C#‎ رو در حالت checked اجرا و نتیجه رو بررسی کنید.
    دوست عزیز از کجا می شه این خاصیتی که گفتی رو فعال یا غیر فعال کرد ؟
    ممنون از نکته ای که گفتی

  2. #82

    نقل قول: وی بی .نت یا ..... ؟

    سلام
    checked
    {...}

    کدی را که می خواهید بررسی شود بین بلاک مربوط به checked قرار دهید،کدهای خارج از این بلاک بررسی نمی شوند.در عین حال کلمه کلیدی unchecked هم موجود است.

  3. #83

    نقل قول: وی بی .نت یا ..... ؟

    بهترین کتاب ویبی دات نت به نظر من کتاب دیتل & دیتل هستش.
    جعفرنژاد قمی به نظر من به درد کار نمی خوره.

  4. #84

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    دوستان این کد سی



    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 با این یه کم متفاوت باشه


    تاپیک این همه رفته جلو ولی هنوز کسی نگفته این دو تا کد معادل هم نیستن ؟

    For m = 1 To 100000
    For n = 0 To 10000



    for (int m = 1; m < 100000; m++)
    for (int n = 0; n < 10000; n++)


    تعداد تکرار حلقه ها به طرز فجیعی با هم اختلاف دارن ! اگه سرعت ایندو برابر بود بیشتر جای تعجب داشت .

  5. #85

    Wink نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    تاپیک این همه رفته جلو ولی هنوز کسی نگفته این دو تا کد معادل هم نیستن ؟

    For m = 1 To 100000
    For n = 0 To 10000



    for (int m = 1; m < 100000; m++)
    for (int n = 0; n < 10000; n++)


    تعداد تکرار حلقه ها به طرز فجیعی با هم اختلاف دارن ! اگه سرعت ایندو برابر بود بیشتر جای تعجب داشت .

    حالا من بقیه را نمی دونم اما من که از این دو کد استفاده کردم.



    Button1.Enabled = False

    Dim V1 As Double = 996585545.21556
    Dim V2 As Double = 2522314498.8892241
    Dim V3 As Double = 0

    Dim I As Double = 0, J As Double = 0

    Dim Time As Long = DateTime.Now.TimeOfDay.TotalMilliseconds

    For J = 0 To 9999999999
    V3 = V1 * V2
    Next

    Label1.Text = DateTime.Now.TimeOfDay.TotalMilliseconds - Time

    Button1.Enabled = True





    Button1.Enabled = false;

    double V1 = 996585545.21556;
    double V2 = 2522314498.8892241;
    double V3 =0;

    double I = 0; double J = 0;

    double Time = DateTime.Now.TimeOfDay.TotalMilliseconds;

    for (J = 0; J < 9999999999; J++)
    {
    V3 = V1 * V2;
    }

    Label1.Text =Convert.ToString ( DateTime.Now.TimeOfDay.TotalMilliseconds - Time);

    Button1.Enabled = true;

    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  6. #86

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    حالا من بقیه را نمی دونم اما من که از این دو کد استفاده کردم.



    Button1.Enabled = False

    Dim V1 As Double = 996585545.21556
    Dim V2 As Double = 2522314498.8892241
    Dim V3 As Double = 0

    Dim I As Double = 0, J As Double = 0

    Dim Time As Long = DateTime.Now.TimeOfDay.TotalMilliseconds

    For J = 0 To 9999999999
    V3 = V1 * V2
    Next

    Label1.Text = DateTime.Now.TimeOfDay.TotalMilliseconds - Time

    Button1.Enabled = True

    Button1.Enabled = false;

    double V1 = 996585545.21556;
    double V2 = 2522314498.8892241;
    double V3 =0;

    double I = 0; double J = 0;

    double Time = DateTime.Now.TimeOfDay.TotalMilliseconds;

    for (J = 0; J < 9999999999; J++)
    {
    V3 = V1 * V2;
    }

    Label1.Text =Convert.ToString ( DateTime.Now.TimeOfDay.TotalMilliseconds - Time);

    Button1.Enabled = true;

    متاسفانه شما هم کدتون در دو زبان معادل همدیگه نیست .اما خوشبختانه چون شما از حلقه های تودرتو استفاده نکردین این اشتباهتون چندان تاثیرگذار در زمان برنامه نباید باشه.
    بعد از اینکه کدتون رو اصلاح کردین بگین به چه اختلاف زمانی رسیدین ؟ آیا اختلاف همچنان زیاد ه ؟

    /
    یه سوال : دلیل اینکه اعداد رو اینطوری انتخاب کردین (مثلا 2522314498.8892241) و از اعداد رند استفاده نکردین چی بوده ؟ (چون احساس می کنم به عمد این کارو کردین مشتاقم مزیتشو بدونم)

  7. #87
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    تاپیک این همه رفته جلو ولی هنوز کسی نگفته این دو تا کد معادل هم نیستن ؟

    For m = 1 To 100000
    For n = 0 To 10000



    for (int m = 1; m < 100000; m++)
    for (int n = 0; n < 10000; n++)


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

  8. #88
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    تاپیک این همه رفته جلو ولی هنوز کسی نگفته این دو تا کد معادل هم نیستن ؟

    For m = 1 To 100000
    For n = 0 To 10000



    for (int m = 1; m < 100000; m++)
    for (int n = 0; n < 10000; n++)


    تعداد تکرار حلقه ها به طرز فجیعی با هم اختلاف دارن ! اگه سرعت ایندو برابر بود بیشتر جای تعجب داشت .
    تازه دوست عزیز شما اول جواب منو بدید به نظر شما توی همین دوتا فوری که نوشتیم کدوک سریعتر؟
    اون که متغیر توی فور تعریف می شه یا اونی که اول تعریف می شه ؟

  9. #89

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    دوست عزیز من که خودم تو چند تا پست قبل به همین مسئله اشاره کردم و شما رو به یک تاپیک جدید فرستادم
    تو اون تاپیک هم سئوالم همین بود که چرا ابن دو تا دستوری که الان شما اشاره کردید از لحاظ سعت خیلی با هم فرق داردن و کدوم سریعترن
    من که چند سال برنامه می نویسم تا حالا اصلا به این قضیه برخورد نکرده بود
    وقتی تعداد تکرار دستورات یه برنامه حدودا 10000 تا بیشتر از یه برنامه دیگه باشه باید هم کندتر اجرا بشه :|

    فکر می کنم باید از شما بپرسم که معادل این کد در سی شارپ چی میشه :
    for i = 0 to 1

  10. #90

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    تازه دوست عزیز شما اول جواب منو بدید به نظر شما توی همین دوتا فوری که نوشتیم کدوک سریعتر؟
    اون که متغیر توی فور تعریف می شه یا اونی که اول تعریف می شه ؟
    یعنی در واقع منظورتون تفاوت بین این دو کده و محل تعریف متغیر (که در بلاک for باشه یا نباشه) رو می خاین بررسی کنین؟ ?

    for (int m = 1; m < 100000; m++)
    و
    Int m;
    for (m = 1; m < 100000; m++)

  11. #91
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    یعنی در واقع منظورتون تفاوت بین این دو کده و محل تعریف متغیر (که در بلاک for باشه یا نباشه) رو می خاین بررسی کنین؟ ?

    for (int m = 1; m < 100000; m++)
    و
    Int m;
    for (m = 1; m < 100000; m++)
    می خوام بدونم کدوم یک از 2 کد زیر سریعتره و چرا

    dim m as int16
    for m=1 to 100
    .
    .
    next


    یا

    for m as int16=1 to100
    .
    .
    next

  12. #92

    Wink نقل قول: وی بی .نت یا ..... ؟

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

    /
    یه سوال : دلیل اینکه اعداد رو اینطوری انتخاب کردین (مثلا 2522314498.8892241) و از اعداد رند استفاده نکردین چی بوده ؟ (چون احساس می کنم به عمد این کارو کردین مشتاقم مزیتشو بدونم)

    دوست عزیز، راستش را بخواهی من متوجه نشدم تفاوت دو کدم در کجاست! اگر امکان دارد توضیح دهید تا آن را برطرف سازم.

    درباره عدد غیر رند هم احصاص کردم برای محاسبه اعداد غیر صحیح با اعشار بالا سیستم به محاسبه و حافظه بیشتری نیاز دارد تا ععداد رند.
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  13. #93

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    دوست عزیز، راستش را بخواهی من متوجه نشدم تفاوت دو کدم در کجاست! اگر امکان دارد توضیح دهید تا آن را برطرف سازم.

    درباره عدد غیر رند هم احصاص کردم برای محاسبه اعداد غیر صحیح با اعشار بالا سیستم به محاسبه و حافظه بیشتری نیاز دارد تا ععداد رند.
    حلقه های for شما در وی بی یه بار بیشتر از معادلی که برای اون نوشتین در سی شارپ اجرا میشن
    برای همین از دوستمون خواستم که معادل این کد رو در سی شارپ بنویسه :
    for i = 0 to 1

    آیا معادلش میشه ؟
    for (i=0,i<1,i++)


    که این اشتباه در مثال شما زیاد بغرنج نبود چون حلقه ی تودرتو نداشتین . اما در مثال اون دوست دیگمون اختلاف زیادی رو باعث می شد ؟
    متوجه منظورم شدید ؟
    /

  14. #94

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    می خوام بدونم کدوم یک از 2 کد زیر سریعتره و چرا

    dim m as int16
    for m=1 to 100
    .
    .
    next


    یا

    for m as int16=1 to100
    .
    .
    next
    هیچ فرقی با هم ندارن .

  15. #95
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

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

  16. #96

    Wink نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    حلقه های for شما در وی بی یه بار بیشتر از معادلی که برای اون نوشتین در سی شارپ اجرا میشن
    برای همین از دوستمون خواستم که معادل این کد رو در سی شارپ بنویسه :
    for i = 0 to 1

    آیا معادلش میشه ؟
    for (i=0,i<1,i++)


    که این اشتباه در مثال شما زیاد بغرنج نبود چون حلقه ی تودرتو نداشتین . اما در مثال اون دوست دیگمون اختلاف زیادی رو باعث می شد ؟
    متوجه منظورم شدید ؟
    /

    درسته ، کاملا حق با شماست ، اصلا به این موضوع توجه نکرده بودم.

    نکته خیلی جالب تر این که تو برنامه ای که دوستمون گذاشت تو سیستم هایی که من امتحان کردم باز هم VB سریعتر کد را اجرا کرد!! این یعنی کلی اختلاف تو C#‎‎ . البته کد خودم را تو چند تا سیستم ازجمله سیستم خونه خودم هم تست کردم که اون هم جوابش جالب شد.




    Cpu : 2.8 1mb cash
    Ram : 1 DDR Bus 400
    VGA : Nvidia 6200(256 MB)
    Main : Asus P4
    Win : Vista Sp1

    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  17. #97
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

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

    یعنی


    int m, n as int16
    for m=1 to 100
    for n=1 to 100
    ..

    next
    next

    کنتدتر از کد زیر اجرا می شه

    for m as int16=1 to 100
    for n as int16=1 to 100
    ..
    ..
    next
    next

    من در این باره یه تاپیک ایجاد کردم که آدرش توی هین تاپیک هست
    یکی از مدیران ارشد سایت هم جواب داد و دلیلش رو توضیح داد

  18. #98
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    درسته ، کاملا حق با شماست ، اصلا به این موضوع توجه نکرده بودم.

    نکته خیلی جالب تر این که تو برنامه ای که دوستمون گذاشت تو سیستم هایی که من امتحان کردم باز هم VB سریعتر کد را اجرا کرد!! این یعنی کلی اختلاف تو C#‎‎‎ . البته کد خودم را تو چند تا سیستم ازجمله سیستم خونه خودم هم تست کردم که اون هم جوابش جالب شد.




    Cpu : 2.8 1mb cash
    Ram : 1 DDR Bus 400
    VGA : Nvidia 6200(256 MB)
    Main : Asus P4
    Win : Vista Sp1

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

  19. #99

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    تازه متوجه شدم که شما داری به چی اشاره می کنی
    منظورتون اون یک باری که کد بیشتر از اون اجرا می شه
    البته اون یک بار با این که اتوی فور هم هست نباید ایقدر اختلاف ایجاد کنه مشکل اصلی مال اوون جایی بود که متغیر حله و تعریف کردیم
    خوب البته یه بار نبود . بلکه به ازای هر یه بار اضافه در حلقه ی بیرونی حلقه داخلی 1000 بار بیشتر اجرا می شد . البته از جهت اینکه قرار بود کد رو برای مایکروسافت ایمیل کنن یه کم قضیه حیثیتی بود .

    برخلاف نظ شما این دو تا حلقه فور با هم اختلاف دارن و اونی که متغیرر حلقه توی خود حلقه تعریف می شه خیلی سریعتر . حتی اگه اون حلقه باز توی یه حلقه دیگه باشه

    یعنی


    int m, n as int16
    for m=1 to 100
    for n=1 to 100
    ..

    next
    next

    کنتدتر از کد زیر اجرا می شه

    for m as int16=1 to 100
    for n as int16=1 to 100
    ..
    ..
    next
    next

    من در این باره یه تاپیک ایجاد کردم که آدرش توی هین تاپیک هست
    یکی از مدیران ارشد سایت هم جواب داد و دلیلش رو توضیح داد
    شما از من در مورد یک حلقه سوال کردید . اما این که الان میگید فرق داره دو تا حلقه ی تو در توه .
    پیشنهاد من به شما اینه که یه زحمتی بکشید برنامه رو با تعداد تکرار بالا و با یه حلقه بنویسید . یه بار به صورتی که شمارنده در دستور for تعریف بشه و یه بار هم قبلش از حلقه تعریف کنید
    برنامه ها رو ریلیز کنید . فایل PDB رو از فولدر پاک کنید و حالا دو تا برنامه رو (exe ها رو ) اجرا کنید .و نتیجه رو بگین . انتظار من زمان برابره.

  20. #100
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط pirmard مشاهده تاپیک
    پیشنهاد من به شما اینه که یه زحمتی بکشید برنامه رو با تعداد تکرار بالا و با یه حلقه بنویسید . یه بار به صورتی که شمارنده در دستور for تعریف بشه و یه بار هم قبلش از حلقه تعریف کنید
    برنامه ها رو ریلیز کنید . فایل PDB رو از فولدر پاک کنید و حالا دو تا برنامه رو (exe ها رو ) اجرا کنید .و نتیجه رو بگین . انتظار من زمان برابره.
    دوست عزیز من دقیقا همین کاری که شما می گید رو کردم و نتیجه این شد که اونی که متغیرر توی فور تعریف می شه سریعتر در حالی که من انتظار عکس این رو داشتم . گفتم تو اون تاپیکی که گفتم یکی از مدیزای ارشد اومد و توضیح داد که چرا اون کد سریعتر
    درحالی که من انتظار داشتم چون توی فور داخلی متغیر حلقهش به ازای هر بار اجرای حلقه بیرونی یه بار تکرار می شه کندترع

  21. #101

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    دوست عزیز من دقیقا همین کاری که شما می گید رو کردم و نتیجه این شد که اونی که متغیرر توی فور تعریف می شه سریعتر در حالی که من انتظار عکس این رو داشتم . گفتم تو اون تاپیکی که گفتم یکی از مدیزای ارشد اومد و توضیح داد که چرا اون کد سریعتر
    من اون تاپیک رو خوندم . اما هنوز دارم میگم این دو تا کد برابرند .
    SOURCE="vb"]
    Option Strict On
    Public Class Form1

    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 Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim c1, c2, frq As Long

    QueryPerformanceCounter(c1)

    For i As Int64 = 0 To 20000000000
    Next
    QueryPerformanceCounter(c2)
    QueryPerformanceFrequency(frq)
    MsgBox((c2 - c1) / frq)


    End Sub
    End Class[/source]

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

    اگر باز هم اعداد نابرابر گرفتین زحمت بکشین و این دو تا برنامه رو که اگزه هم هست اجرا کنین و بگین که آیا زمان نابرابر میگیرین ؟(ضمیمه شده)
    (ضمنا حواستون باشه چون برنامه موقع شروع به کار هیچی نشون نمیده ممکنه فکر کنین اجرا نشده و چند بار دیگه روش کلیک کنین. بعد از اجرای برنامه هیچی دیده نمیشه و بعد از حدود 30 ثانیه باید مسیج باکس بگیرین)
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip for.zip‏ (12.4 کیلوبایت, 2 دیدار)

  22. #102
    کاربر دائمی آواتار hossein-khoshseyar
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    532

    نقل قول: وی بی .نت یا ..... ؟

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

  23. #103

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط hossein-khoshseyar مشاهده تاپیک
    دوست عزیز با کمال تعجب باید بگم که فابل شما با یک زمان اجرا شد 59.7
    می شه کدتو بزاری
    آخه من همه کاری که شما گفتید رو انجام دادم . وقتی هم اونجا توی اون تاپیک یکی از مدیران ارشد توضیح داد . دیگه مطمئن شدم
    اه می شه شما کدت رو بزار تا یه بار خودم اجراییش کنم و چک کنم
    ضمیمه کردم. فقط توی فولدر ریلیز که رفتی اگه با اجرا جوابهای نابرابر گرفتی اون فایل PDB رو پاک کن و دوباره بدون اون فایل سرعتها رو چک کن.
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip for.zip‏ (197.0 کیلوبایت, 13 دیدار)

  24. #104

    نقل قول: وی بی .نت یا ..... ؟

    سلام به همگی‌ بازم دعوا سر یه چیزی که از ریشه غلط است
    دوستان برای اندازه گیری زمان اجرای یه برنامه که تایمر یا کورنومتر نمیگیرن
    مهندسان عزیز مگر طراحی الگوریتم پاس نکردید. حداقل clock Time CPU را اندازه بگیرید. بعدم دوستان عزیز خروجی C#‎ و VB یکی‌ است هر۲تاشون از یکسری کامپوننت استفاده می‌کنن مگه می‌شه یه کد تو این با آن‌ یکی‌ فرق کنه اونم یک چنین کد ساده ای.

    اصلا از کجا میدونید که در زمان اجرای یکی‌ از کدها cpu شما interupt نداشته؟ ببخشید اما هم کارتون هم بحثتون خیلی‌ مسخره است بهتر نیست بجای اینکارا به کسی‌ که این topic را گذاشته کمک کنید؟

  25. #105

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط scream666_ss مشاهده تاپیک
    سلام به همگی‌ بازم دعوا سر یه چیزی که از ریشه غلط است
    دوستان برای اندازه گیری زمان اجرای یه برنامه که تایمر یا کورنومتر نمیگیرن
    حداقل clock Time CPU را اندازه بگیرید.
    اصلا احتیاجی به کرنومتر و و کلاک تایم سی پی یو هم نیست. راه حل اصلیش بررسی کدهای میانیه نه کلاک تایم سی پی یو.
    در عین حال حالا که خودتون این راه حل رو پیشنهاد کردین ممکنه بگین کلاک تایم سی پی رو چجوری باید اندازه بگیریم برای این مثالها ؟

    مهندسان عزیز مگر طراحی الگوریتم پاس نکردید.حداقل clock Time CPU را اندازه بگیرید.
    در درس طراحی الگوریتم پیچیدگی زمانی و تتا و ... برای الگوریتمحساب میشه که اینجا اصلا بحث سر الگوریتم نیست.(الگوریتمها برابرند) یعنی کلا چیزی که توی طراحی الگوریتم مطرح میشه به موضوع این بحث ربطی نداره.

    بعدم دوستان عزیز خروجی C#‎‎‎ و VB یکی‌ است هر۲تاشون از یکسری کامپوننت استفاده می‌کنن مگه می‌شه یه کد تو این با آن‌ یکی‌ فرق کنه اونم یک چنین کد ساده ای.
    اگه صفحات قبل رو خونده بودید می دیدید که همه از اول (بدون استثنا) واقف بودن که کدهای این دو زبان برابرند و زمانی این مساله مهم شده بود که یه مورد ناهماهنگی پیدا کرده بودن.

    اصلا از کجا میدونید که در زمان اجرای یکی‌ از کدها cpu شما interupt نداشته؟
    گیریم که اینتراپت داشته باشه به قول شما، بازم تاثیر چندانی نداره. شما یه برنامه رو داری اجرا می کنی و ده بار هم که اجرا کنی به عددی نزدیک 60 ثانیه می رسی و برنامه دیگه رو همیشه عدد 10 ثانیه میگیری !
    نفر اول : از تهران تا فلانجا پیاده چقدر راهه ؟
    نفر دوم : حدودا m روز
    نفر اول : از کجا معلوم توی سفر ، دستشوییت نگیره ؟


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

  26. #106

    نقل قول: وی بی .نت یا ..... ؟

    قبل هر چیز دوست عزیز من منظورم متلک یا این چیزها نبود اگر توهین شده عذر می خواهم. اما به تاپیک و بحث دقت کنید می بینید که مشکل کجاست.
    ممکنه بگین کلاک تایم سی پی رو چجوری باید اندازه بگیریم برای این مثالها ؟
    این سوال جالبی بود. من خودم اینکار را در VB.Net نکردم اما در C++‎ به راحتی امکان پذیر هست. اما سوال خوبی است از همکارهام اینجا می پرسم و جوابتان را می دهم.

    چیزی که توی طراحی الگوریتم مطرح میشه به موضوع این بحث ربطی نداره.
    اگه آن درس را یادت باشه اعلام می شه که مهم زمان الگوریتم هست و نه زبان برنامه نویسی.

    زمانی این مساله مهم شده بود که یه مورد ناهماهنگی پیدا کرده بودن.
    تا آنجایی که من کد ها را خواندم هر دو کد یکی نبودند. اگه میگید یکی هستند و این اتفاق بیفتد در شرایط یکسان که امکان پذیر نیست، آن وقت می شود بحث کرد

    نفر اول : از تهران تا فلانجا پیاده چقدر راهه ؟
    نفر دوم : حدودا m روز
    نفر اول : از کجا معلوم توی سفر ، دستشوییت نگیره ؟
    اینتراپت CPU می تواند از زمان برنامه شما بیشتر طول بکشد

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

  27. #107

    نقل قول: وی بی .نت یا ..... ؟


    سلام دوست عزیز
    قول دادم که راه حال درست را ارائه بدهم. خودم نمیدونستم از همکاران پرسیدم و این راه حلیست که همکاران اینجا تو مایکروسافت استفاده می‌کنن البته من یک نگاه سرسری به کد‌های شما انداختم جایی‌ ندیدم که کسی‌ از این راه حل استفاده کرده باشه.
    برای این منظر کلاسی در .Net هست به اسم StopWatch در لینک زیر میتونید پیداش کنید یه نگاه بهش بندازید مشکلی‌ بود بگید تا کمک کنم
    امیدوارم که مفید بود باشه.
    http://msdn.microsoft.com/en-us/libr...stopwatch.aspx


  28. #108

    نقل قول: وی بی .نت یا ..... ؟

    نقل قول نوشته شده توسط scream666_ss مشاهده تاپیک

    سلام دوست عزیز
    قول دادم که راه حال درست را ارائه بدهم. خودم نمیدونستم از همکاران پرسیدم و این راه حلیست که همکاران اینجا تو مایکروسافت استفاده می‌کنن البته من یک نگاه سرسری به کد‌های شما انداختم جایی‌ ندیدم که کسی‌ از این راه حل استفاده کرده باشه.
    برای این منظر کلاسی در ‎‎.Net هست به اسم StopWatch در لینک زیر میتونید پیداش کنید یه نگاه بهش بندازید مشکلی‌ بود بگید تا کمک کنم
    امیدوارم که مفید بود باشه.
    http://msdn.microsoft.com/en-us/libr...stopwatch.aspx

    این کد معادل همون کدیه که آقای hossein-khoshseyar استفاده کردن . یعنی بررسی زمان از ابتدا تا انتهای اجرا . یعنی ایراداتی که شما به شیوه ی ایشون وارد کردید رو برطرف نکرده (مثلا اینکه اینتراپت یا بار سی پی یو تاثیرگذار باشه یا نه . در واقع این همون به تعبیر خودتون کرنومتره) در هر صورت ممنون /
    بابت پست قبلیتون هم فکر می کنم دلیلی برای توضیح بیشتر وجود نداشته باشه. مثلا توضیح بیشتر در مورد بی ربط بودن طراحی الگوریتم به کد حاصل از کامپایل .
    ///


    برگردیم سر بحث اصلی
    جناب hossein-khoshseyar
    من اون تاپیک که یکی از مدیران ارشد دلیلشو توضیح داده بودن رو خوندم . ظاهرا اونجا بحث تفاوت دو کد در گلوبال / لوکال بودن متغیرها بود . که خوب طبیعیه چنین نتیجه ای رو بشه گرفت .اما کلن برای بررسی این موراد به نظر من بررسی کد میانه راهگشا تر باشه .
    برای بررسی کدهای میانه از ildasm استفاده کنید . من اونو در این آدرس دارم :
    C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ildasm.exe
    فقط کافیه فایل اگزه رو باهاش باز کنید و به قسمت مورد نظرتون برین(مثلا رویداد موردنظر) و اونو بررسی کنین. ترجیحا وقتی مثلا منظورتون بررسی یه حلقه ی for هست اونو به ساده ترین صورت ممکن بنویسید تا بعد از تبدیل شدن به کد میانی گیج کننده نباشن. مثلا یه حلقه ی ساده با 2 بار تکرار و بدون دستور داخلی .

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



    Dim i As Int64
    For i = 0 To 2
    Next

    End Sub
    End Class



    نتیجه اینچنینی را خواهید گرفت :

صفحه 3 از 3 اولاول 123

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •