Разматывание петли в бейсике - PullRequest
2 голосов
/ 10 мая 2011

У меня есть встроенный процессор, на котором установлена ​​урезанная версия BASIC (Parallax BASIC Stamp). В цикле я записываю 1024 значения через шину SPI.

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

Профилирование затруднено, так как мне нужно найти доступную булавку, записать в нее импульс, а затем измерить ее с помощью оптического микроскопа.

С теоретической точки зрения, разворачивание цикла в BASIC дает какие-либо преимущества в скорости?

1 Ответ

1 голос
/ 15 мая 2011

Теоретически, развертывание цикла сокращает время, затрачиваемое на увеличение и сравнение в цикле.Благодаря сокращению времени, затрачиваемого на цикл, достигается повышение производительности.

Количество полученного времени может быть не таким значительным для интерпретируемой программы, как скомпилированная программа.Для интерпретатора требуется время, необходимое для извлечения инструкции, интерпретации (построения кода) и выполнения кода для инструкции.Для того чтобы экономия времени при развертывании цикла была значительной, экономия времени должна быть больше, чем эти издержки.

В отличие от микропроцессоров, интерпретаторы не могут быть оптимизированы для скорости выполнения.Современные процессоры имеют высокоскоростные кэши, методы прогнозирования ветвлений и прогнозирования.Некоторые могут даже загружать новые инструкции в кеш, когда другие выполняются.Развертывание цикла использует преимущества этих функций, уменьшая количество переходов и делая выполнение более предсказуемым.Для скомпилированных языков это добавляет значительную экономию (для больших итераций).Эта экономия времени на производительность может не распространяться на большинство переводчиков, поскольку они могут не использовать эти функции.

Лучшее определение улучшения производительности - измерение.В моем случае, должно быть достаточно жалоб пользователей, чтобы оправдать график выполнения измерений.

...