Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстродействие кода / 11 сообщений из 11, страница 1 из 1
13.02.2019, 13:55
    #39773342
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Всем добрый день! Подскажите , пожалуйста, дельные советы по оптимизации кода, простой текстовый файл на 9 строчек обрабатывается больше 20 секунд. Читал, что многое кроется в неграмотно составленных циклах, но остро нуждаюсь в реально эффективных решениях! Заранее спасибо за отклики

Код построчно считывает текстовый файл и удаляет ненужные строки при помощи сравнения:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Sub Command5_Click()
Dim F As Long
Dim Fn As String
Dim MyText As String
Dim a(1 To 3) As String
Dim i As Integer

Text1.Text = vbNullString
F = FreeFile
Fn = "E:\test.txt"

a(1) = "*id=""3""*"
a(2) = "*id=""5""*"
a(3) = "*id=""7""*"

Open Fn For Input As #F
Do Until EOF(F)


n: Line Input #F, MyText
   For i = 1 To 3
     If Not MyText Like a(i) Then
    GoTo m:
    Else
    GoTo n:
    End If

m: Next i
Text1.Text = Text1.Text & MyText &  vbNewLine
Debug.Print Text1.Text

Loop
Close #F

Open Fn For Output As #F
Print #F, Text1.Text
Close #F

End Sub




Текстовый файл выглядит так:
1
2
3id="3"
4
id="5"5
6
7 id="7"
8
9
...
Рейтинг: 0 / 0
13.02.2019, 14:02
    #39773352
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
JamesMilnerобрабатывается больше 20 секундУ меня этот код выполняется мгновенно, да и нечему тут вроде тормозить.
...
Рейтинг: 0 / 0
13.02.2019, 14:04
    #39773354
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Скорее всего, есть дополнительные факторы. Возьми чистый проект, засунь туда ТОЛЬКО этот код и запусти, скорее всего тормозов не будет, и дальше будет повод искать в другом месте
...
Рейтинг: 0 / 0
13.02.2019, 14:29
    #39773385
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
1) Считать весь файл в переменную, и затем поделить на строки - быстрее, чем считывать построчно
2) INSTR(переменная, 'шаблон') быстрее, чем LIKE переменная, '*шаблон*'
3) Goto за пределы цикла - это могуче...
JamesMilnerсоветы по оптимизации кодаВсё стереть и начать по новой.
...
Рейтинг: 0 / 0
13.02.2019, 14:46
    #39773406
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
...
Рейтинг: 0 / 0
13.02.2019, 14:52
    #39773414
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Shocker.Pro, пробовал, разницы в быстродействии нет
...
Рейтинг: 0 / 0
13.02.2019, 14:59
    #39773423
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Хм. Ну чудес не бывает, тут даже на файловую систему вроде не спишешь, ибо "E:\test.txt", я надеюсь, путь на локальном диске.

Ну попробуй тупо с помощью точек останова определить конкретное место, где тормозит, например при открытии файла или при записи.

... эээ может антивирус какой начинает файл проверять при перезаписи и тупит?
...
Рейтинг: 0 / 0
13.02.2019, 15:01
    #39773424
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
По каким признакам вообще определяется, что код закончил работу?
...
Рейтинг: 0 / 0
13.02.2019, 15:23
    #39773436
JamesMilner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Shocker.Pro, проблема решилась тупым переносом дока с одного локального диска на другой. Но всё равно интересно было бы узнать причины такого странного поведения
...
Рейтинг: 0 / 0
13.02.2019, 15:50
    #39773456
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
Я уже сказал выше - поставь точки останова, посмотри, что конкретно тупит
...
Рейтинг: 0 / 0
17.02.2019, 09:05
    #39775067
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстродействие кода
JamesMilnerShocker.Pro, проблема решилась тупым переносом дока с одного локального диска на другой. Но всё равно интересно было бы узнать причины такого странного поведениядиск умирает.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстродействие кода / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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