Как мне заставить Django StaticLiveServerTestCase использовать существующую базу данных

Если вы выполняете короткий код без цикла и если ваш уровень API достаточно высок:

    ArrayList<ArrayListModel> filteredList = new ArrayList<>(modelList);
    filteredList.removeIf(m -> ! aList.contains(m.getId()));

Сначала он копирует исходный список, а затем удаляет из копии элементы, чей идентификатор не в aList. Не ошибайтесь, конечно, в реализации removeIf есть цикл (по-настоящему три цикла).

Если вы опасаетесь, что может потребоваться слишком много времени для выполнения с большим количеством данных : Подождите. Не оптимизируйте, прежде чем вы убедитесь, что это необходимо. Если вы беспокоитесь, проводите тесты на реальных объемах данных на компьютере, родственном вашему компьютеру с нагрузкой, аналогичной ожидаемой.

Если вы либо видели на производстве, либо в своих тестах, что выше занимает слишком много времени, первый прием заключается в том, чтобы поместить идентификаторы либо в HashSet, либо в BitSet, чтобы ускорить поиск. Например:

    Set<Integer> ids = new HashSet<>(aList);
    ArrayList<ArrayListModel> filteredList = new ArrayList<>(modelList);
    filteredList.removeIf(m -> ! ids.contains(m.getId()));

Если вам нужно дополнительное ускорение, сортируйте оба списка по ID и используйте алгоритм слияния. Посмотрите, что это такое.

На настольном компьютере вы также можете получить ускорение от потока API и параллельных потоков. Является ли это также на устройстве Android, которое я не знаю.

0
задан O.D.P 20 January 2019 в 06:00
поделиться