Сравнение быстродействия ADO и ADO.NET

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сравнение быстродействия ADO и ADO.NET

Сообщение sergey-911 » 05.02.2009 (Чт) 8:48

Доброго времени суток уважаемые.
Прошу сильно не ругаться, если тема покажется Вам бессмысленной!

Технология ADO.NET, пришедшая на смену ADO, позиционируется как новейшая технология доступа к БД, более быстрая и надежная, и т.п....
На практике, у меня, аналогичная программа, написанная на VB.NET, открывает таблицу из 50000 записей в 4 раза медленее, чем написанная на VB6 (соответственно 4 и 1 сек)! При отладке выяснил, что тормозит не грид, выводящий данные, а именно объект DataReader.
В обеех программах, данные формируются не в конструкторе, а ручками.

А теперь собственно вопрос, почему программа на VB6 работает гораздо быстрее? Это я накосячил, или так и должно быть? Если надо, код выложу.
С уважением, Сергей.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Сравнение быстродействия ADO и ADO.NET

Сообщение Sebas » 05.02.2009 (Чт) 10:02

Почитай про курсоры. и выложи код ,где у Тебя в Х раз разница.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Сравнение быстродействия ADO и ADO.NET

Сообщение sergey-911 » 05.02.2009 (Чт) 13:08

Спасибо Sebas.
Код заполнения грида.
Подключение осуществляется через "фабрику подключений".
Код: Выделить всё
        'Для Access
        Dim CONNSTRING As String
        CONNSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=TelSpr.mdb"

        Dim SQL As String
        SQL = "Select * from vw_ElPhones"

        Dim provider As System.Data.Common.DbProviderFactory
        provider = System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb")

        Using Connection As System.Data.Common.DbConnection = provider.CreateConnection()

            Connection.ConnectionString = CONNSTRING
            Connection.Open()
            Using Command As System.Data.Common.DbCommand = provider.CreateCommand()

                Command.Connection = Connection
                Command.CommandText = SQL
                Using rdr As System.Data.Common.DbDataReader = Command.ExecuteReader()

                    'Загрузка таблицы
                    Dim tbl As New DataTable()
                    tbl.Load(rdr)
                    Grid.DataSource = tbl

                End Using
            End Using
        End Using


Притормаживает фрагмент кода:
Код: Выделить всё
tbl.Load(rdr)


P.S. Код для VB6 пока не привел, если понадобится - выложу.
Спасибо.
С уважением, Сергей.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

    TopList