Страница: 1 | 2 | 3 |
Вопрос: Type или Class???
Добавлено: 14.08.04 11:54
Автор вопроса: AgentFire | ICQ: 192496851
Ответы
Всего ответов: 33
Номер ответа: 16
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #16
Добавлено: 15.08.04 01:31
А смотреть будешь .NET-приложение или нормальную программу?
Номер ответа: 17
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #19
Добавлено: 15.08.04 13:29
Такую ничью любой может сделать. Называется "Китайская ничья". Это когда все фигуры смахиваются с доски
Номер ответа: 20
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #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 получилось другое время? Пример другой что ли?