2015-07-02 7 views
1

Программа 1+:o на эзотерическом языке программирования ><> (Рыба) замедляется со временем, и я не знаю почему. Это замедляется больше всего на :, который дублирует элемент в верхней части стека и несколько замедляется на o, который печатает соответствующий символ для верхнего элемента в стеке. Вы можете попробовать: here; просто убедитесь, что инициализируйте стек с помощью 0. Это замедляется быстрее на мобильных устройствах (источник: мой телефон), если вы хотите проверить меньше времени.Почему эта программа в><> (Рыба) работает так медленно через какое-то время?

+2

На моем компьютере нет замедления до ~ 1000. На каком индексе вы видите замедление? Считаете ли вы использование другого переводчика? Я не думаю, что это связано с особенностью самого языка, больше похоже на проблему реализации. – Bentoy13

+0

Спецификации языка: https://esolangs.org/wiki/Fish – mbomb007

ответ

0

никогда не слышал этого языка раньше, но здесь некоторые возможности:

  1. ваш выход увеличивающиеся

    • поэтому каждая итерация вы получили больше 1 символ, чтобы показать
    • если ваш brownser не есть какой-то умный освежающий
    • тогда это будет замедлять темп для более высоких n
  2. не имеют понятия, что вы делаете, как язык не чужд мне

    • , но похоже, что вы также увеличивают некоторый массив/стек/кучу/независимо от размера
    • по одному пункту каждый итерация, которая принимает модуль памяти
    • и на телефонах есть не так много, доступны
    • не говоря уже о переездах ...
  3. выход выглядит она в Unicode

    • и как только вы попали в специальные символы, то это зависит от шрифтов, установленных
    • некоторые персонажи довольно медленно.
    • Обычная политика заключается в том, чтобы найти использованную кодовую страницу в установленных шрифтах, которая может занять некоторое время
    • , а сама рендеринг также для некоторых символов не очень хороша.
    • Если у вас есть шрифт Unicode (а не только куски), он должен значительно ускорить процесс (особенно растровые шрифты).
    • Но их там не так много, и они никогда не видели ничего, что было бы полным (это было огромным), но это время я искал тех ...
    • здесь один из примеров «полного» юникодного шрифта GNU_Unifont
0

Я программируюсь> <> раньше, поэтому я дам свой взгляд на него.

Лично я не испытывал большого замедления программы при запуске на моем компьютере. Я запустил его с анимацией, поэтому я мог видеть, что происходит со стеком и скоростью выполнения.

Операции стека, похоже, происходят с одинаковой скоростью все время. Я запускал его за 3300. Выход замедляется, но это потому, что наборы символов для иностранных языков используют символы, которые каким-то образом объединяются или взаимодействуют друг с другом. Это основная причина визуального замедления, так как вывод должен быть переписан, поскольку некоторые символы печатаются рядом друг с другом. Так что, действительно, факт использования памяти увеличивается дольше, чем вы ее запускаете, и того факта, что выход нетипичен.

Также был напечатан символ RTL (справа налево), поэтому все выходные данные, следующие за этим символом, отображаются справа налево, а браузер не используется и не может быть оптимизирован.

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