LoganSquare анализирует библиотеку Android: отзывы, тесты, плюсы, минусы

Я использую Jackson с библиотекой DataBind для анализа json и отображения его java-объекта. Я также использую Gson в другом проекте, где перфомант менее необходим.

17 февраля первая библиотека LoganSquare, обещая 4-10 раз быстрее разбора в качестве Gson.

  • Какие преимущества у LoganSquare, кроме Gson/Jackson, не были?
  • Плюсы и минусы?
  • Есть ли у вас эталонные тесты в производственном приложении?
  • Является ли достаточно стабильным для производственного приложения?

Я понимаю, что это может быть основной вопрос, основанный на мнении, поэтому будьте как можно более техничным и конкретным, и основывайте свой ответ на реальных данных.

Ответы

Ответ 1

Чтобы быть понятным, если вы отправляете свое приложение на устройства с ART, у вас будет огромное преимущество в скорости при разборе пар.

поэтому я расскажу о своем опыте с logansquare.

профи:

  • Прост в использовании: с помощью Gson вы должны использовать Type для разбора json-массива в список объектов, в loganSquare это так просто, как LoganSquare.parseList()
  • Быстрее: на любом устройстве (протестируйте его самостоятельно) он немного быстрее.
  • FasterER: в устройствах ART его разрыв скорости действительно гигантский, см. их бенчмарк
  • RetroFit дружелюбный: да, он хорошо играет с модификацией.

минусы:

  • NO REALM DB: я не мог запустить его с Realm db до сих пор (я еще не пробовал работать)

  • Адаптер пользовательского типа. Не удалось найти адаптер типа или что-то подобное до сих пор, но я не уверен.

см. их ориентир здесь

и вот мои плохие результаты тестов (это не правильный тест, но это что-то): Эмулятор nexus 5, с DalvikVM, 4.2 jellybean

Бенчмарки

время синтаксического анализа

график времени разбора

Разработана модель

import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.google.gson.annotations.SerializedName;

/**
 * Created by Ercan on 6/26/2015.
 */
@JsonObject(serializeNullCollectionElements = true ,serializeNullObjects = true)
public class Village {

    @SerializedName("IdVillage")
    @JsonField(name ="IdVillage")
    String tbsVillageId;

    @SerializedName("TBS_VillageId")
    @JsonField(name ="TBS_VillageId")
    String townRefId;

    @SerializedName("VillageName")
    @JsonField(name ="VillageName")
    String villageName;

    @SerializedName("Status")
    @JsonField(name ="Status")
    String status;

    @SerializedName("DateInserted")
    @JsonField(name ="DateInserted")
    String dateInserted;

    @SerializedName("DateLastModified")
    @JsonField(name ="DateLastModified")
    String datelastModified;

    public String getTbsVillageId() {
        return tbsVillageId;
    }

    public void setTbsVillageId(String tbsVillageId) {
        this.tbsVillageId = tbsVillageId;
    }

    public String getTownRefId() {
        return townRefId;
    }

    public void setTownRefId(String townRefId) {
        this.townRefId = townRefId;
    }

    public String getVillageName() {
        return villageName;
    }

    public void setVillageName(String villageName) {
        this.villageName = villageName;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getDateInserted() {
        return dateInserted;
    }

    public void setDateInserted(String dateInserted) {
        this.dateInserted = dateInserted;
    }

    public String getDatelastModified() {
        return datelastModified;
    }

    public void setDatelastModified(String datelastModified) {
        this.datelastModified = datelastModified;
    }
}

Ответ 2

Я запускал проект LoganSquare Benchmark на моем устройстве Nexus 5 с Android 6.0.1, и вот результат:

Скриншоты Benchmark LoganSquare

Кроме того, после короткого времени потратьте на lib, вот мои плюсы и минусы:

Pros

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

против

  • не большая часть документации, также не много вопросов и ответов на StackOverflow:)
  • поддерживается не много типов.
  • Только строковые ключи, поддерживаемые в коллекциях Map

Я написал проект , чтобы увидеть, как работает LoganSquare, а также в блоге, так что посмотрите там дополнительную информацию.

Ответ 3

response.body() это строка json response

//MovieData это класс модели

 MovieData movieData=LoganSquare.parse(response.body(),MovieData.class);

 Log.d("onResponse: ",movieData.getTitle());

Ответ 4

Библиотека не обновляется с 4+ года.

До сих пор он работал в основном нормально, но, насколько мне известно, он перестанет работать после 5-го класса.