Redux кажется медленным при сохранении большой коллекции в хранилище - PullRequest
0 голосов
/ 14 января 2019

Упрощенная ситуация:

Я работаю над работающим приложением, которому нужно сохранить около 650 объектов в виде массива в Redux store.

Приложение содержит RestaJs - Redux - ImmutableJs - Перебрать techstack. Но я обнаружил замедление к фактическому сохранению данных в хранилище Redux.

Использование ImmutableJs не имеет значения. Я создал POC с и без этой структуры, и производительность не изменилась.

Следующий код - мой SearchReducer

const searchReducer = (state = fromJS(defaultState), action) => {
  switch(action.type) {
    case SEARCHMUSICIAN:      
      const { searchTerm, results } = action.payload;

      return state.set('searchTerm', searchTerm)
                  .set('foundMusicians', fromJS(results));

    default:
      return state;
  }
};

Чем можно объяснить замедление? Redux на самом деле медленный с большими коллекциями или большими объемами данных одновременно? Есть ли флаг или конфигурация, которые я пропускаю, чтобы увеличить производительность Redux?

Performance example without Immutable Performance example with Immutable

1 Ответ

0 голосов
/ 16 января 2019

Я думаю, что мы исправили это сейчас. Очевидно, Redux очень медленный с большими массивами. Я преобразовал отправленную полезную нагрузку в объект, и теперь задержка сохранения в хранилище увеличивается с 2-3 секунд до 30-50 миллисекунд.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...