Показано с 1 по 10 из 29

Тема: Создание скриптов на RGSS для людей со средними знаниями и экспертов

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Маститый Аватар для Рыб
    Информация о пользователе
    Регистрация
    12.11.2008
    Адрес
    [ДАННЫЕ УДАЛЕНЫ]
    Сообщений
    1,421
    Записей в дневнике
    50
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    Спасибо, SCoon, за то что поднял тему на главную.
    И огромное спасибо Arnon'у за написание ее.
    По поводу:
    " И конструкции вида "Foo#{i}" поддаются оптимизации лучше, чем "Foo"+i.to_s."
    На самом деле 1 операция работает быстрее чем 3.

    Сейчас объясню поподробнее: строка Foo#{i} создает объект-строку и помещает ее кучу(надеюсь в Ruby все такие есть понятие "куча").
    А давайте проследим что делает строка "Foo"+i.to_s." первым делом она делает объект "Foo" и помещает его в кучу. Затем она делает объект строку - i.to_s(вторая операция) и помещает его в кучу...далее она делает сложение строк, результатом которой есть третий объект "Foo"+i.to_s."(вот она третья операция)....
    Итого: мы сделали 3 операции и два лишних объекта в куче...
    Twitch <- Тут иногда делаю вид, что умею играть или работать, в прямом эфире
    GitLab <- Тут иногда делаю вид, что умею программировать
    Github <- Еще какая-то дичь, тут иногда появляется, но с мукером не связана
    Notion<- Тут иногда делаю вид что умею планировать

  2. #2
    Новичок Аватар для SCoon
    Информация о пользователе
    Регистрация
    24.12.2012
    Адрес
    Москва
    Сообщений
    5
    Записей в дневнике
    3
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Рыб Посмотреть сообщение
    строка Foo#{i} создает объект-строку и помещает ее кучу
    Не совсем. Где ruby возьмет значение этой строки -- при компиляции оно еще не известно, в нем есть переменная i? Соответственно, при исполнении в некотором буфере будет размещен префикс "Foo", затем для i будет вызван to_s и произведена конкатенация. Но в этом варианте не обязательно будет использована куча. Вполне может быть задействован статический временный буфер.

    Т.е. операций все равно будет три, но выполняться они будут чуть иначе. И, как оказалось, чуть быстрее.

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

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

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

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

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