kaloyan предлагает использовать генератор. Вот почему это может помочь.
Если getNodeNames()
строит список, то ваш цикл в основном проходит по списку дважды: один раз для его создания и один раз, когда вы перебираете список.
Если getNodeNames()
является генератором, то ваша петля никогда не будет создавать список; вместо создания элемента и добавления его в список он создает элемент и возвращает его вызывающему.
Независимо от того, зависит ли это от нескольких вещей. Во-первых, это должно быть возможно реализовать getNodeNames()
в качестве генератора. Мы ничего не знаем о деталях реализации этой функции, поэтому нельзя сказать, если это так. Затем количество элементов, которые вы повторяете, должно быть довольно большим.
Конечно, ничто из этого не будет иметь никакого эффекта, если окажется, что отнимающая много времени операция составляет всего vr_world.getChild()
. Вот почему вам нужно профилировать свой код.
'.getNodeNames()' запускается только один раз, когда вы вводите цикл 'for', поэтому, если это займет некоторое время, исправьте это (если возможно). Независимо от того, как вы это делаете (например, с учетом списков - однострочники, на которые вы ссылаетесь), по-видимому, вам нужно будет получить данные, которые функция выйдет каким-то образом. –
один лайнер! = Быстрый –
Пропустили ли вы свой код через профилировщик, чтобы узнать, что * часть * этого медленно? – Daenyth