

- Код: Выделить всё
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 Мб) файлов есть, а при загрузке и форматировании маленьких файлов все еще лучше...
