Задать вопрос

Как оптимизировать код?

Добрый день. Есть код который проходится по JSON массиву и удаляет дубликаты:
JObject jsMain;
var unique = jsMain["data"].GroupBy(x => x["word"]).Select(x => x.First()).ToList();
            for (int i = jsMain["data"].Count() - 1; i >= 0; i--)
            {
                var token = jsMain["data"][i];
                if (!unique.Contains(token))
                {
                    token.Remove();
                }
            }

Так вот если массив большой то этот код работает очень очень долго. Подскажите пожалуйста как его можно ускорить?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Без структуры json-а, описания решаемой задачи и того, что лежит в ?коллекции? unique - сложно сказать.
Начать можно с отказа от JObject
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Лет 10 назад у меня в БД Oracle была такая проблема. Медленно чистились исторические partitions.
Ничего нельзя было придумать. Потом мы заметили что удаляется 99% datarows. После этого пришла
идея - вообще ничего не удалять а просто пересоздавать историчесекий parition с теми datarows
которые НАДО ОСТАВИТЬ. И грохать оригинальный. После такой оптимизации мы ускорились в 1000 раз. Надо было только сделать exchange partitions (ораклоиды поймут).

Вот так вот.
var token = jsMain["data"][i];
                if (!unique.Contains(token))
                {
                    token.Remove();
                }

Попробуй другую стратегию. Пересоздай новый JSON. С учетом удаленных токенов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы