Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: VB тормозной говорите... Добавлено: 25.12.03 23:08  

Автор вопроса:  Страшный Сон
На деле Visual Basic по скорости такой же, как и остальные языки. Просто возможности немного урезаны. Главное - установить флажки в Advanced Optimizations. У меня есть программа на VB, определяющая скорость счета, реально доступную для программы. Она оказывается на 27 MГц меньше при среднем приоритете и всего на 10 Мгц при высоком (средние значения при тактовой частоте процессора 777 МГц). А если снять флажки Advanced Optimizations, то скорость счета понизится в 3-4 раза. Зачем это нужно - непонятно.

Ответить

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

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



ICQ: 200700724 

Вопросов: 38
Ответов: 329
 Web-сайт: localhost
 Профиль | | #1
Добавлено: 26.12.03 02:00

Если галочки сняты, то VBRuntime пытается проверять нет ли в программе ошибок например переполнения переменных и если таковое имеется то пытается исправить положение...ИМХО

Ответить

Номер ответа: 2
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #2 Добавлено: 26.12.03 22:21
Ну так исправляет он его так же, как и винда - выкидывает из памяти нафиг.

Ответить

Номер ответа: 3
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 27.12.03 19:37

На самом деле язык выполняющий проверки на переполнение после каждой операции не может быть быстрее того языка, который этого не делает.

Однако мое глубокое убеждение, что хорошо оптимизированная программа на VB лучше, чем просто программа на C++.

Ответить

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



Вопросов: 5
Ответов: 13
 Профиль | | #4 Добавлено: 27.12.03 19:52

Есть один факт, с которым я думаю никто спорить небудет.

Попробуйте сами:

В вб открываем файл , размеров мега 3-4 и запускаем чтение его в массив например...

что мы имеем? глобальный подвисон секунд на 5-7 в лучшем случае.

теперь проделайте то же самое в delphi и убедитесь что вы не заметите никакой задержки. наверное это о чем то говорит?

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #5 Добавлено: 28.12.03 00:19

Вот такой кусок кода.

Private Sub Комманда1_Click()
    Dim FFree As Integer
    Dim L As Double
    Dim i As Double
    Dim Var As Byte

Dim arr(0) As Byte
        FFree = FreeFile
    Debug.Print Now
        Open "D:\CR\БазаМ1.mdb" For Binary As FFree
        L = LOF(FFree)
        ReDim arr(L - 1)
        For i = 0 To L - 1
        Seek FFree, i + 1
            Get #FFree, 1, Var
            arr(i) = Var
        Next i
        Close
    Debug.Print Now
        ReDim arr(0)
    Debug.Print Now
End Sub

Как вы думаете что самое медленное в этом коде? Правильно, ReDim arr(0) - около 60 % всего времени. Убить массив дольше  чем его объявить и заполнить. А птички в оптимизации мало что дают. Через раз то с птичками быстрее, то медленнее. Оптимизировать надо сам код, а не перекладывать это на IDE

Ответить

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



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 28.12.03 07:00

Ну при открытии файла ясно почему торомзит. Скорее всего на Дельфи это делается в отдельном потоке.

Честно говоря, ИМХО, любую оптимизацию прибивает библа на 1.4 метра.

Ответить

Номер ответа: 7
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #7 Добавлено: 28.12.03 23:49

> ...Она оказывается на 27 MГц меньше при среднем приоритете и всего на 10 Мгц при высоком...

Здесь небольшая ошибка. Дело в том, что при тестировании я был подключен к Инету, и у меня в фоновом режиме работали некоторые "жрущие" процессы. Потом я протестировал повторно, закрыв все проги, и оказалось, что при среднем приоритете недотягивает на 10 МГц, а при высоком - по-разному, но преимущественно от 2 до 8 МГц, то есть почти на 100%.

Ответить

Номер ответа: 8
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #8 Добавлено: 29.12.03 01:23

To Страшный Сон
Чего-то я не понял, эти Advanced Optimizations каким боком сказываются на работе приложения? Ускоряют, что-ли??? Возможно в тест-программе и бегают какие-то другие проценты, но в реальном приложении время работы не уменьшается ни на секунду

 

Ответить

Номер ответа: 9
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #9 Добавлено: 29.12.03 18:33

Фактически это отключает "режим отладки", то есть VB перестает тратить ресурсы процессора на разные ошибки типа переполнения, некорректных операций. Но распространяется это только на компилированый ехе-файл. Из среды все будет также. А из екхешника если галочки не ставить, то при какой-нибудь некорректной операции будет показано сообщение от программы, в которой указан номер ошибки и название. Если галочки поставить, вычисления ускорятся в несколько раз, а при том же случае будет показано системное сообщение типа "программа выполнила недопустимую операцию и будет закрыта.". Мне кажется правильнее было бы по умолчанию поставить птички, но в VB почему-то их приходится в каждом проекте устанавливать.

Ответить

Номер ответа: 10
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #10 Добавлено: 29.12.03 19:07

Сделал маленький эксперимент: в цикле 2000 раз делаю frm.PaintPicture - из PictureBox перерисовываю на форму рисунок .bmp  ок. 1,2Мб и тот же рисунок перерисовываю при помощи BitBlt  тоже 2000 раз. Потом скомпиллировал оба варианта по 2 раза - Optimized.exe  и  NonOptimized.exe. В итоге 4 .exe файла - 2 API и 2 VB.  Ну и начал запускать их поочереди, после каждого запуска перезагружая систему( чтоб всё чисто было) Вот цифры:

API-Optimized.exe - 3 сек, API-NonOptimized.exe - 3сек.

PaintPicture-Optimized.exe - 26 сек, PaintPicture-NonOptimized.exe - 26 сек.

А где ускорение работы - не понял? Если ставить галочки, чтобы  exe сразу вываливался по ошибке (молча) то какая разница - с сообщением или без - всё равно вывалится, и отсутствие галочек не избавит от необходимости отлаживать код и предусматривать возможные ошибки

Ответить

Номер ответа: 11
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #11 Добавлено: 30.12.03 15:48

Нашел как сравнивать... На API это тоже не распространяется - они не зависят от настроек программы. Попробуй самый обычный цикл:

For I = 0 To 333333333: Next I

Миллиард операций. Без оптимизации - 1.78 сек, с ней - 0.89 сек, выходит ровно в два раза быстрее.  В некоторых случаях еще больше разрыв получается.

Ответить

Страница: 1 |

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



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