|
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
|
||||||
For-Next в разных BASIC: количество итераций внутри цикла уже не изменить21.08.2012, 17:37. Показов 4364. Ответов 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 Задать количество итераций цикла по несмежным диапазонам
Подсчитать количество итераций цикла в единицу времени Количество итераций цикла с одинаковым значением кратного Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|