Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость инициализации переменных 
:(
    Опции темы
VictorGr
Дата 29.7.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.10.2006

Репутация: нет
Всего: нет



Имею таймер,
который раз в секунду работает с WinAPI, HWND, ProcessID и проч. Использует переменные.

Подумал: а насколько быстра инициализация переменных? Ведь по сути у меня каждую секунду создаются переменные, с ними идёт работа, затем они уничтожаются.

А если их вынести наружу? В область модуля?

Их инициализация не будет происходить?

А если внутри функции использовать Static переменные?

Или вообще потери скорости настолько незначительные, что можно на них не обращать внимание?

Спасибо!
PM MAIL WWW   Вверх
W4FhLF
Дата 29.7.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Ну видел бы ты во что компилятор VB превращает элементарные операции, это ужас. Конечно здесь куча лишних "телодвижений", лучше вынеси. Прироста в скорости может и не ощутишь, но мне бы было приятней smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Akina
Дата 29.7.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(VictorGr @  29.7.2007,  19:38 Найти цитируемый пост)
насколько быстра инициализация переменных?

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
JusTalionis
Дата 31.7.2007, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Раз в секунду - это абсолютно незаметное замедление при ЛЮБОЙ инициализации (исключая ожидание ответа устройств, конечно). Ты же не на 486 работаешь?..

По моим наблюдениям, скорости выполнения процедур приходится оптимизировать, если тебе требуются частоты выше 400 герц, или вычисления вставлены внутрь цикла.
(Например, у меня были траблы с созданием анимации, когда требуется быстро перерисовывать картинку, и лишние задержки отражаются на равномерности. И то, здесь больше сказывается сама работа Виндовс, чем построение VB-кода)

PM MAIL   Вверх
W4FhLF
Дата 31.7.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата(JusTalionis @  31.7.2007,  08:07 Найти цитируемый пост)
И то, здесь больше сказывается сама работа Виндовс, чем построение VB-кода


Ну если бы был виноват виндовс, то тормозило бы везде. Ты ещё не исключил один источник тормозов: реализацию алгоритма. 

Ещё, может ты под p-code компилировал. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
VictorGr
Дата 31.7.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.10.2006

Репутация: нет
Всего: нет



JusTalionis, я бы с удовольствием и каждый 100 мс. включал таймер, да только процесс при этом грузит проц на 20%.

Ежесекундная проверка -- на 1-4%.

Конечно, постараюсь ещё оптимизировать алгоритм. И обратил внимание на инициализацию переменных как на один из способов уменьшить задержки.
PM MAIL WWW   Вверх
JusTalionis
Дата 2.8.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Цитата(W4FhLF @  31.7.2007,  09:00 Найти цитируемый пост)
Ну если бы был виноват виндовс, то тормозило бы везде.
 А везде и тормозило. Я разные реализации попробовал - примерно одинаково, ну - на границе ощутимости разница.


Цитата(W4FhLF @  31.7.2007,  09:00 Найти цитируемый пост)
Ещё, может ты под p-code компилировал. 
 Да, под P. А как иначе в VB?
Если есть дельный совет - прошу ответ в мою тему "Анимация средствами VB", не будем засорять тему Victorа посторонними обсуждениями.

PM MAIL   Вверх
JusTalionis
Дата 4.8.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Цитата(VictorGr @  31.7.2007,  12:34 Найти цитируемый пост)
обратил внимание на инициализацию переменных 

Вообще, как я слыхал, наиболее быстрый доступ - к глобальным переменным, и типу Long. Но IMHO тебе это даст выигрыш не весьма ощутимый (если их не сотни штук).

PM MAIL   Вверх
Akina
Дата 5.8.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(JusTalionis @  4.8.2007,  10:15 Найти цитируемый пост)
наиболее быстрый доступ - к глобальным переменным

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

Цитата(JusTalionis @  4.8.2007,  10:15 Найти цитируемый пост)
и типу Long

не для VB - тут нет регистровых переменных, все переменные ссылочные.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Tectoder
Дата 10.8.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: нет
Всего: 8



Вобщем, попытаюсь вкратце изложить свое менние.
Инициализация всех локальных переменных в процедуре это буквально две очень простые операции
1)измененеие одного регистра,  время на эту оперцию никак не зависит от числа пременных
2) обнуление непрерывной области памяти(эта операция по времени пропорциональна суммарной длине переменных, однако по сути она ничтожна)
Если переменные объявлены as new... то процедура инициализации такая же. Но при первом обращении происходит еще и создание объекта, про это то же не надо забывать.
Сама работа с локальными и глобальными переменными почти идентична. Разницы в скорости mov [imm] и mov [r-imm] почти нет.
Если только речь идет не о apartment-модели com-сервера. Если же модель такая, то работа с локальными переменными намного быстрее.
Раз в секунду это вообще мелочь, если как вроде бы было замечено ты не ждешь ответа от флоппика.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1035 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.