Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 |

 

  Вопрос: Type или Class??? Добавлено: 14.08.04 11:54  

Автор вопроса:  AgentFire | ICQ: 192496851 

Ответить

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

Номер ответа: 16
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #16
Добавлено: 15.08.04 01:31
А смотреть будешь .NET-приложение или нормальную программу?

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #17
Добавлено: 15.08.04 11:40
 Я не буду. Может ты посмотришь?

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #18 Добавлено: 15.08.04 12:29
Выходит, ничья?!

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #19
Добавлено: 15.08.04 13:29
 Такую ничью любой может сделать. Называется "Китайская ничья". Это когда все фигуры смахиваются с доски :)

Ответить

Номер ответа: 20
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #20
Добавлено: 15.08.04 14:52
У меня нет .NET-приложений и я не хочу их писать :) Поэтому, видимо, действительно китайская ничья.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #21 Добавлено: 15.08.04 19:56
Но!
После долгих и утомительных тестирований выяснилось следующее:
Если 100000 раз использовать Type то:
    Время, затраченное на обработку свойств объекта примерно равно 0.1 с
Если 100000 раз использовать Class то:
Время, затраченное на точно такую же обработку свойств объекта примерно равно 0.7 с.

Вот и думайте после етого, чего быстрее!

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #22
Добавлено: 15.08.04 23:48
 Получается что стёк ;)

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #23 Добавлено: 16.08.04 08:25
Да, сия фишка во многих книгах расписана. Имеется такое понятие - кэширование свойства, посколько при обращение к классу всегда дольше чем к стековой переменной. Тем более что обращение к свойству класса - это фактически вызов процедуры. С глобальными переменными класса дело обстоит сложнее. Ты как тестировал, со свойствами или глобальными переменными?

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #24 Добавлено: 16.08.04 17:51
Я тестировал со свойствами.

>Тем более что обращение к свойству класса - это фактически вызов процедуры
Я бы сказал самый прямой вызов процедуры. Например:
Property Get/Let <PropName> ()
   PropName=mvarPropName
End Property

Чем не вызов?
Вызов процедуры(Class) на VB гораздо медленнее, чем Type, хотя для Type'а такие процедуры все равно происходят, зато уже на машинном коде, то есть как будто меняешь значение простой переменной.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #25
Добавлено: 17.08.04 01:22
>хотя для Type'а такие процедуры все равно происходят

 Ну да, PUSH и POP - это типа процедур.

POP - Pop Word off Stack
                                 Clocks Size
        Operands 808x 286 386 486 Bytes
        reg16 8 5 4 4 1

        reg32 4 - - 4 1
        segreg 8 5 7 3 1
        mem16 17+EA 5 5 6 2-4
        mem32 5 - - 6 2-4

 Как видно из этой таблицы, POP выполняется за 4 такта процессора с регистрами и за 6 тактов с памятью.
 Соответсвующее число операций и выполняется процессором в этой команде. Это и есть отличие CISC процессоров от RISC.
 RISC-процессор может выполнять только простейщие инструкции. Зато говорят быстрее.

 Но компилятор не создаёт кода, который использует PUSH или POP. Он адресует напрямую через регистры ESP и EBP. А та же пересылка(MOV) из стека в регистр или память занимает всего один такт.

Ответить

Номер ответа: 26
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #26 Добавлено: 17.08.04 08:38
Noviks, не надо приводить примеры для круглых ламеров. Я все-таки онлайновый :)
Попробуй лучше с переменными и сравни результаты.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #27 Добавлено: 18.08.04 00:12
Я не только для тебя привел пример, бывают ламеры, хуже, чем круглые. :~)

Ты имеешь ввиду сравнить изменение свойства Type'а и переменной, если я все правильно понял?

Ответить

Номер ответа: 28
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #28 Добавлено: 18.08.04 08:10
Переменной, объявленной в классе как Public, не как свойство класса.

Ответить

Номер ответа: 29
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #29 Добавлено: 18.08.04 16:36
Понял, ща...

Хе, в данном случае Class'у требуется 0.1 с, а Type'у 0.05 с!!!

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #30 Добавлено: 18.08.04 17:05
А как у тебя с Type получилось другое время? Пример другой что ли?

Ответить

Страница: 1 | 2 | 3 |

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



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