|
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
|
||||||
For-Next в разных BASIC: количество итераций внутри цикла уже не изменить21.08.2012, 17:37. Показов 4432. Ответов 26
Метки нет (Все метки)
Изучал бейсик на ZX-Spectrum. Если кто не знает, это такая клавиатура, которая подключается к ТВ, а вместо дисковода используется кассетный/бабинный магнитофон.
Потом не мало посидел в QBasic под DOS. Spectrum и QBasic при изменении значения max меняли количество повторов цикла.
Современному VBA нет дела до изменения значения параметра. Было сказано до max. Значит до max, и забудь что ты передумал и поменял значение max. Пришлось использовать While, но это ж не по фен-шую, для простого перебора оптимален именно For-Next.
0
|
||||||
| 21.08.2012, 17:37 | |
|
Ответы с готовыми решениями:
26
Задать количество итераций цикла
|
|
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
|
|
| 21.08.2012, 18:32 [ТС] | |
|
С учетом того что конец цикла отодвинулся только на единичку, то искал долго.
На старых машинах For - Next работал заметно шустрее.
0
|
|
|
Кормпилятор
|
|
| 22.08.2012, 10:37 | |
|
0
|
|
|
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
|
|
| 22.08.2012, 16:15 [ТС] | |
|
Не по теме: Прошу прощения, отсутствовал. Quiet Snow ответил верно. Цикл For - Next работал быстрее чем While-счетчик-Wend
0
|
|
|
Супер-модератор
|
||||||
| 22.08.2012, 17:37 | ||||||
|
Про ZX-Spectrum не скажу, но вот результат тестирования трех видов циклов, которые делают одно и то же для Visual Basic:
0
|
||||||
|
Кормпилятор
|
|
| 22.08.2012, 18:09 | |
|
Ну во-первых, лонга нам не надо при тестировании конструкций
j& = j& + 1 т.е. ставим инты на внешнем и внутреннем цикле + увеличиваем внешний цикл(внутренний цикл ставим - предел инта). а во-вторых вот эта штука хавает всё время(вычитание, умножение, конверт типа и 2 сложения дабла), хуже только тригонометрия и извлечение корня ![]() S# = S# + 2 * (j& - 1) + 1 уберите её вообще оттуда и измеряйте чистое время работы циклов, в for счётчик уже есть, его не может не быть т.к. сам for работает, если не верите что он работает, поставьте глобальный каунтер и смотрите по таймеру... + время работы программы должно быть большое, секунд 30 минимум, чтобы разницу было явно видно.
0
|
|
|
Супер-модератор
|
|||
| 22.08.2012, 18:13 | |||
|
Заменил long на integer. Результат ниже. Выводы? 1) Производительность циклов сопоставима 2) циклы с long работают быстрее (о чем я и говорил). Кстати, "чистое время цикла For без тела" не так-то просто замерить... Не исключено, что компилятор такой цикл просто выкинет. Да и зачем нужен "пустой цикл"?
0
|
|||
|
Кормпилятор
|
||
| 22.08.2012, 18:29 | ||
которая хавает в десятки раз больше времени, чем работа цикла. Создам как я ща макрос и тоже проверю, самому интересно.
0
|
||
|
Супер-модератор
|
|||
| 22.08.2012, 18:32 | |||
|
0
|
|||
|
Кормпилятор
|
||||||||||
| 22.08.2012, 18:57 | ||||||||||
250 2125 2250 Но если хотите, я специально для вас, накакаю себе в комп визуал бейсиком и протестирую, делов то 15 минут...
, ничего он не выжмет с VBA не припаяв к нему dll'ку написанную на асме или на с...
0
|
||||||||||
|
Супер-модератор
|
||||
| 22.08.2012, 19:28 | ||||
|
Добавлено через 8 минут В VBA цикл FOR примерно вдвое быстрее. Мой тест на длинных целых дает: 1344 2297 2156 На коротких целых: 1406 2312 2906 Так что, применительно к VBA вы правы. Добавлено через 1 минуту
0
|
||||
|
Кормпилятор
|
|||
| 22.08.2012, 19:47 | |||
Мой код и данные тоже реальны, то что цикл работает - тоже реально... Создайте макрос запустите посмотрите.
"высокоуровнево" решать этот вопрос, если вы когда н-ть кодили на асме, то понимаете как неповоротлив ВУ-код, он не раскладывается по конвеерам, не оптимизирует работу с регистрами, переходы ставит не там где надо, убивая кеш команд насмерть и предсказание переходов. Человек не спроста задал этот вопрос, значит он упёрся в эту производительность и есть вероятность, что он пытается что-то мелкое делать и видит существенную разницу ставя разные циклы. И тут ему приходится ставить лишний счётчик и проверку условия(всё это ведь в FOR'е работает побыстрее ясен пень, чем отдельно).
0
|
|||
| 22.08.2012, 19:59 | |
|
0
|
|
|
Супер-модератор
|
||
| 22.08.2012, 20:05 | ||
|
1) радикально изменить алгоритм задачи 2) сменить язык программирования (на C/С++ или ассемблер) И, вне всякого сомнения, выигрывать копейки на цикле FOR - не тот путь, который приведет к решению.
0
|
||
| 22.08.2012, 20:09 | |
|
0
|
|
|
Кормпилятор
|
||
| 22.08.2012, 20:10 | ||
что прога может работать быстрее и работает на других видах бейсика, я же тоже смотрел и сравнивал как QB работает с циклами, человек явно в недоумении, про спектрум я ваще молчу с его 3-мя мегагерцами, там каждый такт на счету...
0
|
||
| 22.08.2012, 20:10 | |
|
Помогаю со студенческими работами здесь
20
Изменить переменную внутри цикла for Задать количество итераций цикла по несмежным диапазонам
Подсчитать количество итераций цикла в единицу времени Количество итераций цикла с одинаковым значением кратного Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|