Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите соптимизировать код!!! Добавлено: 09.02.03 15:51  

Автор вопроса:  Millenium | Web-сайт: www.aliyev.us | ICQ: 629966 
'Помогите соптимизировать код!!!
Private Sub cmdTranslate_Click()
'Проверка: Сушествует ли библиотека?
frmMain.MousePointer = 11
If Dir(App.Path & "\libuary.lib") = "" Then 'Эсли нет, то выводим сообшение об ошибке
        MsgBox "Библиотека не найдена!", vbCritical + vbMsgBoxHelpButton, "Ошибка"
        frmMain.MousePointer = 0
        Exit Sub
    Else
    'Если она есть то начинаем прочесс считывания файла
        Open App.Path & "\libuary.lib" For Input As 1 'Открываем для считывания
            While Not EOF(1)
                Line Input #1, GL 'Присваиваем значение
                For i = 1 To Len(GL) 'Начинаем проверку
                    If Mid$(GL, i, 1) = "|" Then ' |-разделитель
                        inp = Left(GL, i - 1) 'Ввод равняется левому
                        out = Mid$(GL, i + 1) 'Вывод равняется правому
                        If optLng(0).Value = True Then 'Если первый радио батн включен то
                            If txtWord.Text = inp Then txtTrans.Text = out 'Присв. знач.
                        Else 'Если первый радио батн не включен, то
                            If txtWord.Text = out Then txtTrans.Text = inp 'Присв. знач.
                        End If
                    End If
                Next i
            Wend
        Close #1 'Закрыть файл
End If
frmMain.MousePointer = 0
End Sub

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 vig11



ICQ: 213777061 

Вопросов: 21
Ответов: 159
 Профиль | | #1 Добавлено: 09.02.03 17:19

Прежде всего вместо

If Dir(App.Path & "\libuary.lib") = ""

Нужно писать

If Dir(App.Path & "\libuary.lib") = vbnullstring

Т.к. если несколько раз пишешь "", то компьютер выделяет несколько раз память для "" (пустого стринга), т.к. для него такая запись равна записи одной буквы. Запись vbnullstring можно писать сколько угодно раз. Для компьютера это одна и таже переменная.

Но это цветочки. Вместо

For i = 1 To Len(GL) 'Начинаем проверку
                    If Mid$(GL, i, 1) = "|" Then ' |-разделитель
                        inp = Left(GL, i - 1) 

                        out = Mid$(GL, i + 1) 

                        If optLng(0).Value = True Then 

                            If txtWord.Text = inp Then txtTrans.Text = out 

                        Else 

                            If txtWord.Text = out Then txtTrans.Text = inp 

                        End If
                    End If
                Next i

Пишем

Dim ArrStr() As String

ArrStr = Split(Gl,"|")

inp = ArrStr(0)

out = ArrStr(1)

If optLng(0).value Then
        If StrComp(txtWord.Text, inp, vbBinaryCompare) Then
            txtTrans.Text = out
        Else 'StrComp(txtWord.Text, inp, vbBinaryCompare)
             Напиши, что делать если txtWord.Text <> inp
        End If 'StrComp(txtWord.Text, inp, vbBinaryCompare)
    Else 'optLng(0).value
        If StrComp(txtWord.Text, out, vbBinaryCompare) Then
            txtTrans.Text = inp
        Else 'StrComp(txtWord.Text, out, vbBinaryCompare)
             Напиши, что делать если txtWord.Text <> out
        End If 'StrComp(txtWord.Text, out, vbBinaryCompare)
    End If 'optLng(0).value

 

Ответить

Номер ответа: 2
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #2
Добавлено: 09.02.03 17:58

Спасибо...

Но мне хотелось увидеть более маленкий код...

Быстрота у меня 1,2 на 1Мб.

Твой код подает надежду на 0,7... на 1Мб конечно...

Но всё таки спасибо!!!!

Ответить

Номер ответа: 3
Автор ответа:
 vig11



ICQ: 213777061 

Вопросов: 21
Ответов: 159
 Профиль | | #3 Добавлено: 10.02.03 16:51
А что обозначает быстрота 1.2 на 1 MB. И быстрота 0.7 это лучше или хуже?

Ответить

Номер ответа: 4
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #4
Добавлено: 10.02.03 17:21

Мегабайт кода в минуту...

0,7 Лудше!!!

К стать, я посчитал... не 0,7 а 0,6! Радуюсь!!! :)

Ответить

Номер ответа: 5
Автор ответа:
 vig11



ICQ: 213777061 

Вопросов: 21
Ответов: 159
 Профиль | | #5 Добавлено: 10.02.03 18:00
А как Ты считаешь? Есть какая-то методика расчёта?

Ответить

Номер ответа: 6
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #6
Добавлено: 11.02.03 15:26

Биру код... и файл гте то со строками около 1 МБ на каждой строчке по 11 символов минимум...

Пускаю тайме (свой или другой с секндомером)  и проверяю время до конца файла... Делю количество строк на время :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам