Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Профилер для Access / 13 сообщений из 13, страница 1 из 1
14.04.2004, 13:27
    #32480927
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Я тут сделал клиента на Access, сливает данные из текстов в SQL Server

тексты -> Access(регулярные выражения) -> SQL Server.

Перед этим я сделал то же с помощью DTS и Java Script на SQL Server. (Тут же пришлось переделать, потому что перелив надо делать на клиенте)


И у меня получилось, что DTS справляется с 1 порцией данных за 15 минут, а Access с такой же порцией за 1 час. Алгоритм 1 в 1

Какие средства оптимизации кода можно тут применить, чтобы ускорить выполнение программы?

Знаю, что для С ++ придуманы такие программы как профилеры.

В итоге их работы получается, что

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <stdio.h>
void main()
{
  int i;                                  
  printf( "\n" );                  0 . 001  сек 
  for(i= 0 ;i< 10 ;i++)              0 . 1  сек   
  {                                       
    printf( "%d" ,i);              2  сек     
    printf( "Hello World!\n" );    6  сек     
  }                              0 . 01  сек  
}
всего  8 . 102  сек


Из этого видно, что если printf("Hello World!\n"); выкинуть, то программа отработает за 2.202 сек, и таким образом ускорится.

Есть ли подобные программы для Access?
...
Рейтинг: 0 / 0
14.04.2004, 13:55
    #32481024
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
В форуме только profiler SQL Server'a упоминается.

На VB тоже только он.

Неужели никто не профилирует свои программы?

Или вы в первый раз о профилерах услыхали?
...
Рейтинг: 0 / 0
14.04.2004, 14:04
    #32481049
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
в первый раз
...
Рейтинг: 0 / 0
14.04.2004, 14:06
    #32481054
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Ручками расставляешь свои "таймеры" в критичных кусках кода
...
Рейтинг: 0 / 0
14.04.2004, 14:34
    #32481143
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Диагноз - http://www.rambler.ru?search=profiler
...
Рейтинг: 0 / 0
14.04.2004, 14:44
    #32481167
Bor-L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
http://am.rusimport.ru/MsAccess/topic.aspx?ID=279
...
Рейтинг: 0 / 0
14.04.2004, 15:27
    #32481267
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Bor-L спасибо, это решает проблему. Теперь я по настоящему могу оптимизировать программу.
...
Рейтинг: 0 / 0
15.04.2004, 07:52
    #32482040
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Поискавши в MSDN я обнаружил такую штуку как Visual Basic Code Profiler (VBCP) Это профилер от Microsoft.

Она поставляется с Standart Visual Basic. У меня Enterprise Visual Basic, но почему-то там я этого профилера не обнаружил. Или он поставляется до 5 версии?

Поискав еще, я нашел VBA Code Profiler, демо версию. Она работает с Word, Excel и Access. По сути программа не сильно отличается от ссылки Bor-L.

Попрошу Вас, у кого есть Visual Basic 6 посмотреть в папке tools/unsupported/vbcp.dll.
...
Рейтинг: 0 / 0
15.04.2004, 09:25
    #32482148
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
у меня VB6 и .net - нет такой библиотеки
...
Рейтинг: 0 / 0
16.04.2004, 08:55
    #32483686
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
В MSDN упоминаются профилеры других фирм.

mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2000JAN\1033\period98.chm::/html/ar0698.htm

А vbcp.dll похоже, есть только у VB 5.
...
Рейтинг: 0 / 0
19.04.2004, 15:27
    #32486570
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
Спасибо всем, отпрофилировал

Самым прожорливым оказался код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub InsDat(number As Double, orbit As Integer, knp As Long, descr As String, grafa As Integer)
    Dim qrIns As QueryDef
    Set qrIns = CurrentDb.QueryDefs( "InsDat" )
    qrIns.Parameters!Str = NumStr
     qrIns.Parameters![okonhName] = okonhName
     qrIns.Parameters![soatoName] = okatoName
     qrIns.Parameters![type_prov] = typeProv
     qrIns.Parameters![number] = number
     qrIns.Parameters![orbit] = orbit
     qrIns.Parameters![knp] = knp
     qrIns.Parameters![god] = god
     qrIns.Parameters![zn] = zn
     qrIns.Parameters![descr] = descr
     qrIns.Parameters![okonh] = okonh
     qrIns.Parameters![okato] = okato
     qrIns.Parameters![data_load] = data_load
     qrIns.Parameters![account] = account
     qrIns.Parameters![grafa] = grafa
    qrIns.Execute
End Sub

В этой функции программа находилась 50% времени.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Set mat = rg.Execute(i)
    okonhName = okonhName & mat.Item (0 ).SubMatches (0 )
    strSql =  "SELECT dbo_d_okonh.okonh FROM dbo_d_okonh WHERE (((dbo_d_okonh.OkonhName)='" & okonhName & "'));" 
    Set rec = CurrentDb.OpenRecordset(strSql)
    If Not rec.EOF Then
        okonh = rec!okonh
    Else
        okonh =  0 
    End If
А здесь она находилась 20% времени

Все обращения к базе данных очень длительны.
...
Рейтинг: 0 / 0
19.04.2004, 15:35
    #32486592
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
И еще, использовал профилер http://am.rusimport.ru/MsAccess/topic.aspx?ID=279
...
Рейтинг: 0 / 0
19.04.2004, 16:08
    #32486650
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Профилер для Access
автор

Самым прожорливым оказался код
Private Sub InsDat(number As Double, orbit As Integer, knp As Long, descr As String, grafa As Integer)
Dim qrIns As QueryDef
Set qrIns = CurrentDb.QueryDefs("InsDat")
qrIns.Parameters!Str = NumStr
qrIns.Parameters![okonhName] = okonhName
qrIns.Parameters![soatoName] = okatoName
qrIns.Parameters![type_prov] = typeProv
qrIns.Parameters![number] = number
qrIns.Parameters![orbit] = orbit
qrIns.Parameters![knp] = knp
qrIns.Parameters![god] = god
qrIns.Parameters![zn] = zn
qrIns.Parameters![descr] = descr
qrIns.Parameters![okonh] = okonh
qrIns.Parameters![okato] = okato
qrIns.Parameters![data_load] = data_load
qrIns.Parameters![account] = account
qrIns.Parameters![grafa] = grafa
qrIns.Execute
End Sub




А если попробывать след. образом:
CurrentDb.Execute "INSERT INTO Table (Field1,Field2...FieldN) VALUES (" & VALUE1 & ", " & VALUE2 & ", " ... ", " & VALUEN & ")"
может побыстрее будет

ну или через Recordset
rst.AddNew
rst.Update
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Профилер для Access / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]