User Tag List

Показано с 81 по 90 из 180

Тема: Почему компилированный Бейсик выполняется быстро?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.11.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    167
    Спасибо Благодарностей отдано 
    80
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Почему компилированный Бейсик выполняется быстро?

    Берем программу на бейсике, компилируем и она ускоряется ... в несколько раз. А почему так сильно ускорается, в несколько раз? Часто пишут, что интерпретатору сначала надо проанализировать программу. Но он (наверное) программу, выполняет по строчкам, как разные источники пишут. То есть берет из строки по одной команде, анализирует что за команда и переводит в машинный код. И вот вопрос - неужели интерпретатор самую большую часть времени тратит просто на анализ текста, может еще какие технические причины есть для ускорения?

    Например по операторам, в спектруме ключевые слова это же токены, а не строки букв. Значит надо проанализировать не всю строку до пробела, а всего 1 байт и понятно будет что за оператор - для ABS и CLS 1 байт вместо 3 букв, а для PAUSE 5 и RANDOMIZE 9 букв. И кроме того сразу можно сделать таблицу соответствия токен -- адрес его обработки, тогда переход к подпрограмме обработки оператора должен будет выполняться за время о(1), т.е. независимо от числа возможных токенов. Ну ладно, я не знаю как внутри обработка в ROM устроено, может даже не сделали таблицу и выполняют сравнение токенов по цепочке if 200 else if 201 else if 202 итд. Ну все равно, проверка менее 128 вариантов должна выполняться не очень долго.

    Потом подумал, что еще другие моменты есть. Например, интерпретатор все время опрашивает клавиатуру на предмет нажатия BREAK, а компилированный код не опрашивает - или тоже опрашивает?
    И при выполнении операторов GOTO адрес для строки перехода скорее всего неизвестен интерпретатору, поэтому он начинает анализировать каждую строку программы, выискивая нужную.

    Какие еще мысли есть по поводу того, где интерпретатор тормозит, а компилированный бейсик ускоряется?

    P.S.

    Есть похожая тема
    Почему Спектрум-бейсик такой медленный?
    https://zx-pk.ru/threads/27831-poche...medlennyj.html

    наиболее понятные объяснения в ответах 3,12,25,35,45,53
    Последний раз редактировалось vlad-kras; 16.11.2023 в 15:57. Причина: поиск выдал похожую тему

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 47
    Последнее: 02.02.2021, 14:06
  2. Как быстро летит время.
    от Mick в разделе Новости
    Ответов: 18
    Последнее: 25.02.2020, 08:43
  3. Почему Спектрум-бейсик такой медленный?
    от mmxdmv в разделе ZX Концепции
    Ответов: 53
    Последнее: 07.07.2018, 19:39
  4. Как быстро добраться до мыши?
    от TomCaT в разделе Для начинающих
    Ответов: 38
    Последнее: 02.03.2010, 11:00
  5. Быстро переместить 384b
    от Aprisobal в разделе Программирование
    Ответов: 6
    Последнее: 23.01.2005, 15:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •