Что быстрее? VB6 или VB.NET?

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 18.10.2008 (Сб) 14:32

Я в свое время потратил много времени на различные тесты. Могу сказать, что на чистой математике (целочисленная, дробная и булевская) VB6 работает раза в полтора быстрее. На более специфичных вещах (чистая рекурсия, создание-удаление объектов), связанных с управлением памятью NET выходит вперед, причем сильно. Но в реальных задачах, по крайней мере в тех, с которыми я привык сталкиваться, это не играет особой роли.
Но на двух и более ядерных процессорах NET выходит вперед даже на математике, даже если писать все, как на vb6, потоки не использовать.
Могу выложить тест - софтверный 3D рендер с исходниками.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 19.10.2008 (Вс) 9:57


Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Что быстрее? VB6 или VB.NET?

Сообщение Nord777 » 19.10.2008 (Вс) 15:40

SLIM писал(а):Во вторых - всеже я считаю что будет состязаться не общество .NET с обществом VB6, а наоборот, общество VB6 с обществом .NET. Так что вам и начинать (судя по товим постам и подписи)
Я совсем не считаю, что речь идет о каком то соревновании двух сообществ. Слово соревнование тут вообще неуместно. Мне просто непонятны необоснованные высказывания, основанные на вещих снах :D

Так что думаю всеже первый шаг за тобой раз уж такой активный.
Ты считаешь, что это МНЕ нужно доказывать что-либо? Я говорил, что .Net быстрее VB6? Нет. Я говорил, что VB6 - отстой? Нет.
Тем не менее, если этот вопрос кому то кроме тебя интересен - можно создать тему.
Вот только я не вижу заинтересованности остальных участников. (Кто будет писать код на VB6?)

Mikle
результаты теста.
Код: Выделить всё
VB6    : 295-317 fps; выделение памяти 6 400 кб, состояние устойчивое.
VB.Net : 242-315 fps; выделение памяти 17 000 - 20 000 кб, идет постоянная работа сборщика мусора.
------------------------------------------------
Процессор: AMD Athlon 64 X2 Dual Core 5200+
OC : Windows XP Pro SP2 (32bit)
ОЗУ: 2 ГБ

Как видим, пиковые значения почти равны, по средним значениям VB6 чуть впереди...
Но! Тест не совсем корректен. Ты не учитывал специфику .Net (Это видно по постоянным выделениям памяти).

Запусти тест из вложения и понаблюдай за выделением памяти. Через несколько секунд, её обьём стабилизируется и останется на этом уровне. А у тебя в тесте трёхмегабайтные скачки.
Вложения
Test.rar
(8.72 Кб) Скачиваний: 317
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 19.10.2008 (Вс) 19:19

Радует, что мастера NET в теме. Тест изначально писался на VB6, и я не до конца уверен, что на NET он полностью корректен. Твой пример обязательно изучу.
Там есть еще расхождение, но уже в пользу NET, очистка экрана в NET идет циклом, а в vb6 с помощью CopyMemory. Это фора в сторону vb6, но, считаю, она обоснована, просто он не умеет оптимизировать такие простые вещи, но это не страшно - их легко оптимизирует программист.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Что быстрее? VB6 или VB.NET?

Сообщение SLIM » 19.10.2008 (Вс) 23:43

Nord777 писал(а):Я совсем не считаю, что речь идет о каком то соревновании двух сообществ. Слово соревнование тут вообще неуместно. Мне просто непонятны необоснованные высказывания, основанные на вещих снах :D

Не нужно вспринимать иногда слова буквально. Соревнования - это то, чем люди могут посатязаться, показав что они умеют например с помощью шеста для прыжков в высоту. Только вот этот шест может быть разного производства и материала. Я ведь не предлагаю лезть в драку за свои технологии. И о каких вещих снах ты говоришь?
Nord777 писал(а):Ты считаешь, что это МНЕ нужно доказывать что-либо? Я говорил, что .Net быстрее VB6? Нет. Я говорил, что VB6 - отстой? Нет.

Нет не считаю. Просто тебя возможно к этому привлеч. Нет ты ничего подобного не говорил
Nord777 писал(а):Вот только я не вижу заинтересованности остальных участников. (Кто будет писать код на VB6?)

Видимо действительно не интересно. Может голоса пособираем. Или опять все заглохнет на корню......
Пишите жизнь на чистовик.....переписать не удастся.....

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 21.10.2008 (Вт) 13:21

Nord777
Не понял, что показывает этот пример? Ведь он без исходника.
В моем примере что-то не нахожу места, где бесконтрольно выделяется память, может подскажешь?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Что быстрее? VB6 или VB.NET?

Сообщение Nord777 » 21.10.2008 (Вт) 22:52

Mikle писал(а):Не понял, что показывает этот пример? Ведь он без исходника.

Nord777 писал(а):Запусти тест из вложения и понаблюдай за выделением памяти. Через несколько секунд, её обьём стабилизируется и останется на этом уровне. А у тебя в тесте трёхмегабайтные скачки.
Ctrl-Alt-Del (Диспетчер задач)

Mikle писал(а):В моем примере что-то не нахожу места, где бесконтрольно выделяется память, может подскажешь?
Я не говорил о бесконтрольности, как раз наоборот, сборщик мусора усиленно её контролирует. твой пример еще не смотрел. Завтра выложу исходник.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 22.10.2008 (Ср) 13:04

То есть сборщиком можно управлять? Например временно запретить?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Что быстрее? VB6 или VB.NET?

Сообщение Nord777 » 22.10.2008 (Ср) 18:38

То есть сборщиком можно управлять?
Частично. Гораздо лучше знать особенности его работы.
Вот неплохая статья на эту тему: http://www.rsdn.ru/article/dotnet/GC.xml

В моем примере что-то не нахожу места, где бесконтрольно выделяется память, может подскажешь?
Всё таки оно есть. Вот оно чудо:
Код: Выделить всё
Public Sub SR_Present()
   SetDIBitsToDevice(Graphics.FromHwnd(frmMain.Handle.ToInt32).GetHdc, 0, 0, SR_Width, SR_Height, 0, 0, 0, SR_Height, CBuffer(0), bi32BitInfo, 0)
End Sub

Внутрях сборки System.Drawing в ответ на строку Graphics.FromHwnd(frmMain.Handle.ToInt32) происходит создание нового обьекта Graphics, а именно вызывается эта функция:
Код: Выделить всё
<DllImport("gdiplus.dll", CharSet:=CharSet.Unicode, SetLastError:=True, ExactSpelling:=True)> _
Friend Shared Function GdipCreateFromHWND(ByVal hwnd As HandleRef, <Out> ByRef graphics As IntPtr) As Integer
End Function
А так как ссылка на обьект нигде не сохраняется, то сборщик мусора всё это дело пытается похерить(что он с успехом и делал). На лицо бесполезная работа.
Ещё одно место, где шла потеря производительности, в процедуре Render:
Код: Выделить всё
    SR_ClearZBuffer(10000)
    SR_ClearCBuffer(&H3F5566)
Вместо этих строк вписал напрямую циклы заполнения массивов.
Итог:
330 fps


Но самое интересное дальше.
На работе стоит Intel Core(TM) 2CPU 4400@2GHz (т.е практически идентичный моему домашнему)
Операционка таже(WinXP Pro SP2)
до исправления твоего кода - 300-311 fps
после исправления твоего кода - 425-436 fps.
Я честно говоря не думал, что Intel так уделает AMD в вычислениях с плавающей точкой.

Завтра на работе погоняю коды VB6 и .Net на другой (64-х битной) машине под Win2003Server.

Проекты сделаны под 2008-ой студией, но под Framework 2.0.
2005-ая к сожалению на днях слетела, а переустановить руки не доходят.
Вложения
NET_исправленный.rar
Поправленный код Mikl'a
(76.58 Кб) Скачиваний: 311
FAST_GRAPHICS.rar
Исходник, который обещал.
(59.07 Кб) Скачиваний: 305
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 23.10.2008 (Чт) 12:45

Я честно говоря не думал, что Intel так уделает AMD в вычислениях с плавающей точкой.

Или что он так зависим от нерационального выделения памяти...
Имею кучу вопросов, но задам позже, после изучения кода.

Забыл сказать сразу - в демках кликом по форме отключается визуализация, так мы перестаем зависить от быстродействия ф-ции SetDiBitsToDevice, лучше мерять быстродействие так, а визуализация нужна только для того, чтобы убедиться, что пример работает корректно.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Что быстрее? VB6 или VB.NET?

Сообщение Nord777 » 23.10.2008 (Чт) 19:13

до исправления твоего кода - 300-311 fps
после исправления твоего кода - 425-436 fps.
Я честно говоря не думал, что Intel так уделает AMD в вычислениях с плавающей точкой.
Хе-хе :D
Это я тестировал только .Net
Сегодня запустил VB6. Результат 500 - fps

Короче говоря, на сегодняшний день мы имеем следующие данные:

Процессор Intel (с визуализацией. Я думаю, что без неё соотношение будет примерно тоже)
Код: Выделить всё
VB6    : около 500 fps
VB.Net : около 430 fps

Процессор AMD. Без визуализации
Код: Выделить всё
VB6    : 332-350 fps
VB.Net : 356-372 fps
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 24.10.2008 (Пт) 14:12

Получается, что новые технологии на AMD активнее применены.
Попробуй на одноядерных - там VB6 рулит однозначно.

Твой пример посмотрел, я его видел раньше, ты демонстрировал использование потока.
Свою ошибку понял, я думал, что Graphics.FromHwnd не создает новый объект, а всего лишь возвращает ссылку на Graphics, который неразрывно связан с формой, создается вместе с ней.
Так что, получается, что в NET формы сами по себе не имеют hDC?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Что быстрее? VB6 или VB.NET?

Сообщение Viper » 24.10.2008 (Пт) 14:27

Mikle писал(а):Так что, получается, что в NET формы сами по себе не имеют hDC?
А окна сами по себе имеют только hWnd, но не hDC (как правило).
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Что быстрее? VB6 или VB.NET?

Сообщение tyomitch » 24.10.2008 (Пт) 15:46

Viper писал(а):
Mikle писал(а):Так что, получается, что в NET формы сами по себе не имеют hDC?
А окна сами по себе имеют только hWnd, но не hDC (как правило).

Не "как правило", а "вообще". DC относится не к окну, а к устройству вывода.
В частности, его можно инициализировать системой координат и регионом отсечения окна. Но никакой другой связи между ними не будет.
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Что быстрее? VB6 или VB.NET?

Сообщение Mikle » 24.10.2008 (Пт) 16:45

То есть в vb6 это самое устройство вывода автоматом создается вместе с формой?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Что быстрее? VB6 или VB.NET?

Сообщение tyomitch » 24.10.2008 (Пт) 16:59

Как конкретно это реализовано в VB6, не знаю, но я бы на их месте создавал DC прямо в Property Get hDC -- зачем раньше?
Изображение

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Что быстрее? VB6 или VB.NET?

Сообщение Sebas » 24.10.2008 (Пт) 23:10

tyomitch писал(а):Как конкретно это реализовано в VB6, не знаю, но я бы на их месте создавал DC прямо в Property Get hDC -- зачем раньше?


Всё-таки, классическое ООП не подразумевает в свойствах функционала. Для этого созданы функции)
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Что быстрее? VB6 или VB.NET?

Сообщение Viper » 25.10.2008 (Сб) 6:22

tyomitch писал(а):
Viper писал(а):
Mikle писал(а):Так что, получается, что в NET формы сами по себе не имеют hDC?
А окна сами по себе имеют только hWnd, но не hDC (как правило).

Не "как правило", а "вообще". DC относится не к окну, а к устройству вывода.
В частности, его можно инициализировать системой координат и регионом отсечения окна. Но никакой другой связи между ними не будет.
"как правило" было добавлено по причине наличия каких-то смутных воспоминаний 10-летней давности о возможности таки прицепить свой собственнный контекст к окну.
Весь мир матрица, а мы в нем потоки байтов!

tych
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 13
Зарегистрирован: 03.12.2013 (Вт) 0:16
Откуда: Russia, Kaliningrad

Re: Что быстрее? VB6 или VB.NET?

Сообщение tych » 14.11.2014 (Пт) 1:22

Сорри, что поднимаю тему, но нашел заметку со сравнениями
http://www.pvsm.ru/matlab/35317
vb6 тестеров удивил

Пред.

Вернуться в Holy Wars@VBStreets

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

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

    TopList