نمایش نتایج 1 تا 12 از 12

نام تاپیک: (مقاله)- استفاده از خصوصیات Recordset برای افزایش سرعت

  1. #1

    Thumbs up (مقاله)- استفاده از خصوصیات Recordset برای افزایش سرعت

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

    http://dn.codegear.com/article/27790

  2. #2
    کاربر دائمی آواتار Valadi
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    فعلا در خدمت شما
    پست
    1,344
    این هم نسخه PDF این مقاله
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    وقتی داده ها رو در گرید نمایش میده فقط اولین رکورد رو نمایش میده و هنگامی که Scroll میکنی تا ردیفهای بعد رو ببینی بقیش رو نمایش میده.
    بجای استفاده مستقیم از RecordSet، از DisableControls و EnableControls استفاده کنید:

    DataSet.DisableControls;
    try
    while not DataSet.Eof do
    begin
    // Do something
    DataSet.Next;
    end;
    finally
    DataSet.EnableControls;
    end;


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  4. #4
    ممنون.ولی آقای کشاورز توی همین مقاله همین چیزی که شما گفتین رو نوشته من هم تست کردم ولی سرعت اولی رو نداره.اگر توی همون مقاله هم نگاه کنید دو نفر پست کردند و دقیقا گفتند که با موردی که شما گفتید سرعت اولی رو نداره.
    ولی در همون جا گفته میتونی از resync استفاده کنی.تا این مشکل حل بشه.

  5. #5
    من امروز یه تست انجام دادم روی 100 هزار رکورد. سرعت AdoQuery با AdoDataSet خیلی فرق نمیکنه، بخصوص وقتی کوئری بیش از یک بار اجرا میشه. وقتی بررسی کردم دیدم استفاده از RecordSet حدودا دو برابر سرعت رو بیشتر میکنه، اما نکته ایی که برام عجیب بود تاثیر استفاده از DisableControls بود. من تا قبل از این فکر می کردم که DisableControls فقط زمانی روی کارایی تاثیر میزاره که حتما یک DataSource به DataSet وصل باشه، ولی با این تست متوجه شدم که بدون توجه به اینکه DataSource ایی به DataSet وصل باشه، DisableControls به میزان فوق العاده ایی روی سرعت کوئری تاثیر میزاره (در تست من روی 100 هزار رکورد، تفاوت در حد چند صد برابر بود!!).
    نکته جالب دیگه کارایی CoreLab SDAC بود. جدای از اینکه این مجموعه کامپوننت امکانات بیشتری نسبت به سایر کامپوننت های دلفی برای اتصال به SQL Server ارائه میده، کارایی اون هم در صورت استفاده از DisabledControls حدود دو و نیم برابر و در صورت استفاده نکردن از DisabledControls حدود 4 برابر بیشتر از کامپوننت های ADO بود. کارایی SDAC تقریبا دو برابر ADO در زمان استفاده از RecordSet بود.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  6. #6
    ممنون.ولی اقای کشاورز میشه کدی که برای استفاده از disablecontrol نوشتین رو اینجا قرار بدین؟
    اخه من هرکاری کردم بازهم فایده ای نداشت.یعنی کوچکترین تاثیری نکرد.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011
    اخه من هرکاری کردم بازهم فایده ای نداشت.یعنی کوچکترین تاثیری نکرد.
    رکورداتون شاید حیلی زیاد نیست

  8. #8
    میشه کدی که برای استفاده از disablecontrol نوشتین رو اینجا قرار بدین؟

    StartTime := GetTickCount;
    AdoDataSet1.DisableControls;
    try
    AdoDataSet1.Open;
    while not AdoDataSet1.Eof do
    begin
    AdoDataSet1.Next;
    end;
    finally
    AdoDataSet1.EnableControls;
    Duration := GetTickCount - StartTime;
    Memo1.Lines.Add('AdoDataSet: ' + IntToStr(Duration));
    AdoDataSet1.Close;
    end;


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011
    DisableControls و EnableControls چه کاری انجام می دهند؟

  10. #10
    نقل قول نوشته شده توسط dkhatibi مشاهده تاپیک
    DisableControls و EnableControls چه کاری انجام می دهند؟
    زمانی که شما با یک کوری کار می کنید و فرض بر این بگیرید که به DbGrid‌متصل باشد با انجام هر تغییر روی کوری کنترل هایی که به اون وصل هستند هم به روز می شوند . با این کار شما قبل از انجام عملیات ارتباط کنترل ها رو با کوری قطع کرده و بعد از انجام عملیات اونها را مجدداً به کوری وصل می کنید . اینطوری سرعت بالاتر می ره .

  11. #11
    کاربر دائمی آواتار nilidelphi
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    ارومیه
    پست
    419

    نقل قول: (مقاله)- استفاده از خصوصیات Recordset برای افزایش سرعت

    با سلام خدمت دوستان
    من این تاپیک رو از اول دنبال کردم ولی چیزی که متوجه نشدم این بود که آیا این روش موقعی است که شما مستقیم از دستورات اس کیو ال در یک کوئری استفاده کرد و open کرد یا از یک دیتاست استفاده کرد و رکورد هارو یکی یکی پیمایش کرد؟
    بنظر شما استفاده ی مستقیو از یک دستور اس کیو ال پرسرعت تر از پیمایش یک دیتاست نیست؟
    من این روش رو تو یک جدول 160هزاری با 12 فیلد در SQL Server2000 امتحان کردم تفاوت سرسام آور بود.

    خوب به نظرتون نوع DBMS هم بر سرعت جستجو قابل چشم پوشیه؟؟؟؟

  12. #12
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    106

    نقل قول: (مقاله)- استفاده از خصوصیات Recordset برای افزایش سرعت

    نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
    نکته جالب دیگه کارایی CoreLab SDAC بود. جدای از اینکه این مجموعه کامپوننت امکانات بیشتری نسبت به سایر کامپوننت های دلفی برای اتصال به SQL Server ارائه میده، کارایی اون هم در صورت استفاده از DisabledControls حدود دو و نیم برابر و در صورت استفاده نکردن از DisabledControls حدود 4 برابر بیشتر از کامپوننت های ADO بود. کارایی SDAC تقریبا دو برابر ADO در زمان استفاده از RecordSet بود.
    من یک برنامه دارم که ADO نوشتم. توصیه می کنید که به SDAC مهاجرت کنم؟ و اینکه نظرتون درباره UniDAC چیه؟

تاپیک های مشابه

  1. فیلدهای یک RecordSet
    نوشته شده توسط mandana.k در بخش Classic ASP
    پاسخ: 0
    آخرین پست: یک شنبه 24 اردیبهشت 1385, 07:56 صبح
  2. عدم اجرای دستورات درrecordset
    نوشته شده توسط ykm145 در بخش Access
    پاسخ: 5
    آخرین پست: جمعه 01 اردیبهشت 1385, 17:55 عصر
  3. عدم اجرای دستورات در recordset
    نوشته شده توسط ykm145 در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: جمعه 28 بهمن 1384, 09:22 صبح
  4. یک سوال در بارة Recordset
    نوشته شده توسط BehnamPro در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: پنج شنبه 31 شهریور 1384, 23:32 عصر

برچسب های این تاپیک

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

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