Длительное время построения градиента - Android

Основная причина, по которой он «быстрее», - это заявленная производительность . Это важно, потому что:

При низком конфликте обновлений оба класса имеют схожие характеристики.

blockquote>

Вы использовали LongAdder для очень частых обновлений, в который атомный CAS и собственные вызовы Unsafe будут вызывать конкуренцию . (См. источник и volatile читает ). Не говоря уже о промахах кеша / ложном совместном использовании на нескольких AtomicLongs (хотя я еще не смотрел макет класса, кажется, что до заполнения фактического поля long не было достаточного количества памяти.

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

blockquote>

Реализация расширяет Striped64, что является держатель данных для 64-битных значений. Значения хранятся в ячейках, которые дополняются (или чередуются), отсюда и имя. Каждая операция может на LongAdder изменять набор значений, присутствующих в Striped64. ячейка создается и изменяется, поэтому старый поток может заканчиваться одновременно с конкурирующим. Когда вам нужно конечное значение, суммы каждой ячейки просто складываются.

К сожалению, производительность связана со стоимостью, который в этом случае является памятью (как это часто бывает). Striped64 может расти очень большой, если большая нагрузка потоков равна d).

Источник цитаты: Javadoc для LongAdder

8
задан Sangeet Suresh 13 July 2018 в 20:30
поделиться

2 ответа

Создайте файл с именем «gradle.properties» в этом каталоге:

C:\Users\[user]\.gradle

И поместите на него этот код:

org.gradle.daemon=true

это уменьшит время сборки градиента.

-1
ответ дан Matin Gdz 17 August 2018 в 12:11
поделиться
  • 1
    Я уже это сделал. Мне нужно знать, почему передатчик привязки данных запускается снова. – Sangeet Suresh 16 July 2018 в 14:46

Я сам нашел проблему. Поскольку существует несколько модулей, и модули зависят друг от друга, один строковый ресурс был привязан к xml с использованием ObservableField из библиотеки привязки данных. Этот строковый ресурс присутствовал в этом модуле, который я изменил. Таким образом, другой модуль, зависящий от этого строкового ресурса, запускает kapt для этих модулей. Поэтому я удаляю все зависимости от всех других модулей. Теперь другие задачи не запускаются.

Но все же я обнаружил, что задача kapt не получает инкрементной вещи. Если что-то изменится, для этого модуля будет выполнена целая задача tiger.

0
ответ дан Sangeet Suresh 17 August 2018 в 12:11
поделиться
Другие вопросы по тегам:

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