Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |

 

  Вопрос: Стоит ли переходить на .NET? Добавлено: 29.07.07 05:02  

Автор вопроса:  программист

Ответить

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

Номер ответа: 16
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #16
Добавлено: 29.07.07 23:26
ЗЫ: ага, по АПИ вб6 уже немножко даже подошла к вб.нет, но и здесь она уступает:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByRef lpPoint As Long) As Long

Private Sub Command1_Click()
    Dim i2 As Long
    Dim j As Long
    j = GetTickCount
    For i2 = 1 To 100000
        MoveToEx hdc, 0, 0, 0
        LineTo hdc, 100, 100
    Next
    MsgBox GetTickCount - j
End Sub
125мс

ВБ2005:
Public Class Form1

    Private Declare Function GetTickCount Lib "kernel32" () As Integer
    Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
    Private Declare Function MoveToEx Lib "gdi32.dll" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer, ByRef lpPoint As Integer) As Integer
    Private Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Integer) As Integer

    Private Structure POINTAPI
        Dim x As Integer
        Dim y As Integer
    End Structure

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Pt As POINTAPI
        pt.x = 0 : pt.y = 0
        Dim i2 As Integer
        Dim j As Integer
        j = GetTickCount
        Dim HDC As Integer = GetWindowDC(CInt(Me.Handle))
        For i2 = 1 To 100000
            MoveToEx(HDC, Pt.x, Pt.y, 0)
            LineTo(HDC, 100, 100)
        Next i2
        MsgBox(CType((GetTickCount - j), String))

    End Sub
End Class
109мс.

но и здесь .НЕТ впереди, такова справедливость... надеюсь после этого топика, никто его больше не назовет тормазнутым :)

Для справедливости, С++ без АПИ - выбивает 94мс.

Поведем итоги:
          без АПИ АПИ:
С++ 94 78
VB.NET 219 109
VB6 375 125

Делайте выводы

ЗЫ:
кто что добавит? Будет интересно посмотреть на ПБ, обгонит ли он С++ со своими асмоциклами ;)

и на пхп =D

Ответить

Номер ответа: 17
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #17 Добавлено: 30.07.07 00:10
Такие результаты скорее всего это из-за устаревшей MSVBVM60 =( Но она куда как меньше Framework

Ага, особенно если использовать ассемблерные вставки

В данном случае не очень-то они помогли. Просто хотел максимум выжать.

Вывод: круче - C++ =)

PS
Грядут времена, когда программеры поделятся на высокоуровневых и низкоуровневых. И те, и другие перестанут понимать друг друга.

Ответить

Номер ответа: 18
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #18 Добавлено: 30.07.07 00:23
И какой же у него результат?

VB6: 24,094 сек
PB: 14,578 сек
Считайте относительно: PB на 60,5% мыстрее чем VB6

VB.NET: А у меня фреймворк навернулся. =P Инсталляха - дома. Минус ему. Точнее студии, наверное...

Ответить

Номер ответа: 19
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #19 Добавлено: 30.07.07 00:59
Блин, глаз опечатка мозолит: Считайте относительно: PB на 39,5% быстрее чем VB6

Ответить

Номер ответа: 20
Автор ответа:
 программист



Вопросов: 1
Ответов: 4
 Профиль | | #20 Добавлено: 30.07.07 02:18
Весьма убедительные доводы. Книги есть, так что буду переползать (времени свободного практически .НЕТ)

Ответить

Номер ответа: 21
Автор ответа:
 vito



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

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #21
Добавлено: 30.07.07 02:35
С++ - 78мс :)
VB.NET - 219мс


С++ согласен.
VB.NET промерно 7000!
Что я делаю не так?:)

При 1000 000
С++ 700 - 800 (intel). Borland отстал (1200-1300).
VB ждать не стал.:)

Ответить

Номер ответа: 22
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #22 Добавлено: 30.07.07 06:32
Вот думаю над этим вопросом. Дело в том, что я как бы уже опоздал с переходом. И думаю дождаться новой версии ВБ (9.0), хотя на сайте МиркоСофта пишут, что оный ВБ будет ставится на ВизуалСтудию 2005 (что собственно и есть .NET), или всеже еще малость подождать?!

Ссылку в студию где такое пишут!

Сейчас LinQ ставится на Visual Studio 2005 но этот билд LinQ не обновлялся уже больше года, что заставляет засомневаться в том что будет релизный LinQ-пак на Visual Studio 2005.

Ждать ничего не нужно - просто берешь и качаешь Visual Studio 2008 Beta 2 и все у тебя будет.
Лицензия Go-Live и некоторое ограничение по времени использования (по опыту предыдущих студий - в мае следующего года может перестать работать). Я бы рекомендовал сразу садиться за 2008-ю версию. Отличия есть и местами существенные.

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

Вах вах вах. Зачем на кофейной гуще гадать тем более уже давно известно какие фичи уже введены в VB 9.0?

Вот здесь читать:
http://msdn2.microsoft.com/en-us/library/ms364068(vs.80).aspx
Сделали даже lamba-выражения (правда синтаксис немного грубее чем в C# 3.0, но и за это спасибо).

Переходить на VB .NET только потому что она на 5 милисекунд выполняет синтетический тест быстрее чем VB6 - глупость, преимущества .NET никак не в том что он обгоняет/не обгоняет какую-то другую среду.

Это новая парадигма, новая концепция, новый подход к программированию. При чем тут эти милисекунды?

Ответить

Номер ответа: 23
Автор ответа:
 vito



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

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #23
Добавлено: 30.07.07 07:18
Это новая парадигма, новая концепция, новый подход к программированию. При чем тут эти милисекунды?


О чем ты? О виртуальной машине, о ООП или о чем -то еще?
Java (котроая сан, а не #) все это уже давно имеет и выдает примерно 300 на 100 000.

public void paint(Graphics g) {
     
     long j = System.currentTimeMillis();
     
     for (int i=1; i < 100000 ;i++)
        {
        g.drawLine(0,0,100,100);
        }
   
        long j1 = System.currentTimeMillis();  

        long j2 =j1-j;    
        
        String t = Long.toString(j2);
    
      jTextField1.setText(t);
     }

Ответить

Номер ответа: 24
Автор ответа:
 VisualPaul



ICQ: 402519798 

Вопросов: 12
Ответов: 111
 Профиль | | #24 Добавлено: 30.07.07 09:54
A:__fastcall убери. Он только в Borland C++ Bulder
B:+1
C:
Power Basic вне конкуренции по быстроте кода среди бейсиков
Есть Free BASIC

Ответить

Номер ответа: 25
Автор ответа:
 VisualPaul



ICQ: 402519798 

Вопросов: 12
Ответов: 111
 Профиль | | #25 Добавлено: 30.07.07 10:00
Это я к 1 странице

Ответить

Номер ответа: 26
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #26
Добавлено: 30.07.07 17:33
vito
VB.NET промерно 7000!
Что я делаю не так?:)
А что делаешь?

Java (котроая сан, а не #) все это уже давно имеет и выдает примерно 300 на 100 000.
Слабовасто, короче - С++ в моде))

Brand

Я бы рекомендовал сразу садиться за 2008-ю версию. Отличия есть и местами существенные.
И где же тебе новичек найдет сразу же учебник на VB2008?

Прочитал статью..., ну кое-где новый синтаксис, With c фигупными скобками, появился where, from etc - при хорошем знании ВБ2005 все эти "отличия" можно изучить за 3 часа, что в них значительного для изучения?

Переходить на VB .NET только потому что она на 5 милисекунд выполняет синтетический тест быстрее чем VB6 - глупость, преимущества .NET никак не в том что он обгоняет/не обгоняет какую-то другую среду.
полностью согласен, но когда тебе скажут, что .НЕТ уступает каким-то там интерпретаторам, скажи, ты опустишь голову и отойдешь в сторонку?

Это новая парадигма, новая концепция, новый подход к программированию. При чем тут эти милисекунды?
Где ж ты раньше был?

Ответить

Номер ответа: 27
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #27 Добавлено: 30.07.07 17:42
where, from etc (точнее это называется LinQ) - это можно сказать самое крутое нововведение

Вцелом количество нововведений в VB 2008 гораздо больше чем было в VB 2005 (имеется в виду синтаксис).

полностью согласен, но когда тебе скажут, что .НЕТ уступает каким-то там интерпретаторам, скажи, ты опустишь голову и отойдешь в сторонку?

С чего бы это вдруг?

Где ж ты раньше был?

Дык... молился...

Ответить

Номер ответа: 28
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #28
Добавлено: 30.07.07 18:17
VB.NET промерно 7000!
этого быть не может. При условии, что у тебя слабее процессор, может 300... Единственное, что там сообщения выскакивают три раза: я беру первый раз, так как линии уже нарисованы и значит процедура выполнена, раз уж дошла до строчки
            MsgBox(System.Environment.TickCount - Start)
остальное - фичи разработчиков

И еще: компилить надо Ctrl + F5, иначе - резутат будет в десять раз больше

VB ждать не стал.:)

при 1000000:
Borland С++ Builder (2002) - 1015мс.
VB6 - 3860мс.
VB2005 - 2734мс.

Ответить

Номер ответа: 29
Автор ответа:
 программист



Вопросов: 1
Ответов: 4
 Профиль | | #29 Добавлено: 30.07.07 18:49
Короче есть такие мне известные версии:
VB.NET (VS 2003)
VB.NET - 2005
VB.NET - 2008
и еще одна VB 9.0 (версию студии не знаю)

Какие между ними отличаи, на сколько существенны и, самое главное, - на кой Хъ. их так много расплодилось!

Ответить

Номер ответа: 30
Автор ответа:
 vito



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

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #30
Добавлено: 30.07.07 18:52
-АлександР-
этого быть не может. При условии, что у тебя слабее процессор, может 300... Единственное, что там сообщения выскакивают три раза:


Проц у меня 3000 64 AND.

Чтоб мессага три раза не выскакивала подправь код.
If h = True Then
            Dim Start As Integer = System.Environment.TickCount

            For i As Integer = 1 To 100000
                e.Graphics.DrawLine(Pens.Plum, 0, 0, 100, 100)
            Next i
            h = False
            MsgBox(Convert.ToString(System.Environment.TickCount - Start))


Условие на истину поставь до мессаги.

Увы у меня все равно примерно 7000?

Ответить

Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |

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



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