RichAPI - результаты впечатляют =)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

RichAPI - результаты впечатляют =)

Сообщение hCORe » 01.04.2004 (Чт) 18:34

:arrow: Я давно хотел проверить эффективность прямого вызова функций через Win32 API... Производилось форматирование открытого 3,8 Мб - файла, формат TXT. Выяснено: самое узкое место программы - выделение всего текста. Загрузка производится очень быстро (1-2 с), форматирование - тоже не со скоростью черепахи Тротиллы :oops:. Для тестов написал вот такие процедуры:

Код: Выделить всё
Public Sub StartTests()
On Error Resume Next
Dim sz As Long, sx As Long
    Debug.Print "/* _ RichAPI Test1 _ */"   
    sz = GetTickCount
    Test1
    sx = GetTickCount
    Debug.Print "*** Text formatting took " + _
    Trim(Str(sx - sz)) + " milliseconds ***"
    Debug.Print "/* _ RichAPI Test2 _ */"   
    Debug.Print "*** Starting Next Tests ***"
    sz = GetTickCount
    Test2
    sx = GetTickCount
    Debug.Print "*** Text2 formatting took " + _
    Trim(Str(sx - sz)) + " milliseconds ***"   
End Sub

Public Sub Test1()
On Error Resume Next
    If rtfHTML.SelLength = 0 Then
        rtfHTML.SelStart = 0
        rtfHTML.SelLength = Len(rtfHTML.Text)
    End If
    'Получить данные
    FormatText
    rtfHTML.SelLength = 0
    rtfHTML.SelStart = 0
End Sub

Public Sub Test2()
On Error Resume Next
    If rtfHTML.SelLength = 0 Then _
    SendMessageLong rtfHTML.hWnd, EM_SETSEL, _
    0, Len(rtfHTML.Text)
    'Получить данные
    FormatText
    SendMessageLong rtfHTML.hWnd, EM_SETSEL, 0, 0
End Sub

Private Sub FormatText()
On Error Resume Next
'Форматировать текст (!!! не диск !!!)
'при помощи стандартных "оберток"
'RichTextBox
    rtfHTML.SelFontName = GetSetting _
     ("RichAPITest", "Settings", "Font", "Arial")
    rtfHTML.SelFontSize = GetSetting _
     ("RichAPITest", "Settings", "Font_Size", 10)
    rtfHTML.SelUnderline = GetSetting _
     ("RichAPITest", "Settings", "Font_Uln", False)
    rtfHTML.SelBold = GetSetting _
     ("RichAPITest", "Settings", "Font_Bld", False)
    rtfHTML.SelItalic = GetSetting _
     ("RichAPITest", "Settings", "Font_Itl", False)
End Sub


Текст процедуры загрузки не приведен ввиду его простоты.
Вот результаты, полученные мной на конфигурации:
Процессор Intel Pentium 4 2.0 GHz, 512 Mб ОЗУ, 80 Гб жесткий диск Seagate Barracuda IV 7200 об/мин.

Код: Выделить всё
[Immediate]

LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 1219 milliseconds.

StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 24156 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 22750 milliseconds ***


Из этого вывод: если не переделывать всю программу с использованием Win32 API, то, скорее всего, вам с лихвой хватит скорости стандартной "обертки" - RichTextBox Control от M$.

Потестируйте процедуры, постите сюда ваши результаты.

ЗЫ. Сам я решил использовать Win32 API.
Все-таки минимальный прирост производительности при открытии больших (>2 Мб) файлов есть, а при загрузке и форматировании маленьких файлов все еще лучше... :wink:
Моду создают модоки, а распространяют модозвоны.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 01.04.2004 (Чт) 18:38

Забыл сказать - ОС Windows XP 5.1.2600 Service Pack 1 + последние апдейты.
Моду создают модоки, а распространяют модозвоны.

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 01.04.2004 (Чт) 18:43

Брось сорцы, больше людей попробуют.
А то копипасти, пиши процедуру загрузки етс.
И файл на котором тестировал запакуй и швырни на хостинг бесплатный, а то результаты разнится будут
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 01.04.2004 (Чт) 19:36

Здесь прикрепил файл проекта и исходники текста (можно почитать - это художественная лит-ра :wink:)
Моду создают модоки, а распространяют модозвоны.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.04.2004 (Чт) 19:49

Во:
Код: Выделить всё
[Immediate]

LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 1250 milliseconds.
StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 12031 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 10375 milliseconds ***


P4 1,8 GHz | 256 MB RAM | HDD - IBM IC35L080AVVA07-0 80 GB 7200 об/мин
WinXP SP1 жутко тормозящая при всем, что только можно сделать (стоит уже почти 2 года :shock:).
Нет меня больше

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 02.04.2004 (Пт) 9:08

Код: Выделить всё
LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 1392 milliseconds.
StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 15112 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 13639 milliseconds ***

Intel Celeron 1.7GHz
256MB RAM
Windows 2000 Server SP4 + last updates
SeaGate ST340016A
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 02.04.2004 (Пт) 16:47

Код: Выделить всё
LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 718 milliseconds.
StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 9750 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 8641 milliseconds ***


AMD AthlonXP 2600+ (~2 Ghz)
1024 Mb RAM
Windows XP Pro, SP1 + Updates
2 * (SATA HDD Maxtor 200 Gb), RAID 1

вечером ещё дома попробую...

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 02.04.2004 (Пт) 17:16

Выпускаю новую, улучшенную версию...
Добавил вызов LockWindowUpdate API. Так стало быстрее, заметно :roll:

Вот результаты тестов на моем компе:
Код: Выделить всё
[Immediate]

LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 1172 milliseconds.
StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 14391 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 12968 milliseconds ***


Система работает "с полной нагрузкой", 70% CPU занимает обработка записей одной очень большой БД...
Моду создают модоки, а распространяют модозвоны.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.04.2004 (Пт) 18:36

Да, быстродействие заметно увеличилось...

Код: Выделить всё
[Immediate]

LoadTests
/* _ RichTextBox Traditional File Load _ */
Text file loaded in 1144 milliseconds.
StartTests
/* _ RichAPI Test1 _ */
*** Text formatting took 8031 milliseconds ***
/* _ RichAPI Test2 _ */
*** Starting Next Tests ***
*** Text2 formatting took 7344 milliseconds ***
Нет меня больше

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 02.04.2004 (Пт) 19:24

Вот оно! Превосходство Win32 API над VB-шными надстройками и "обертками" :twisted:
Моду создают модоки, а распространяют модозвоны.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.04.2004 (Пт) 20:20

:)
Нет меня больше

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.04.2004 (Сб) 18:21

Честно спрашиваю: кто из тестеров читал текст? Книжка интересная, между прочим, и очень даже неплохая :D
Моду создают модоки, а распространяют модозвоны.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 03.04.2004 (Сб) 19:51

Я - нет! До последнего поста даже не знал о его существовании! :oops:
Нет меня больше

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 03.04.2004 (Сб) 19:53

А, это то, что я загружал? Не, не читал! :)
Нет меня больше

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 04.04.2004 (Вс) 13:16

Зря, очень неплохой текстик 8)
Только он в тестовом файле три или четыре раза повторяется :oops:
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

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

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

    TopList