androidjsonandroid-parserlogan-square

LoganSquare parsing Android library : feedback, benchmarks, pros, cons


I'm using Jackson with DataBind library to parse json and map it java object. I'm also using Gson on other project where perf is less required.

On 17 Feb, LoganSquare library is first released, promising 4-10 time faster parsing as Gson.

I understand it can be a primarly opinion base question, so be as technic and specific as possible and base your answer on real data.


Solution

  • Well to be clear if you are releasing your app to devices with ART you will have a huge speed advantage trough parsing.

    so i will explain my experience with logansquare so far.

    pros :

    cons :

    see their benchmark here

    and here is my poor benchmark results(it is not a proper benchmark but it is something): Emulator nexus 5, with DalvikVM,4.2 jellybean

    Benchmarks

    parsing time sheet

    parsing time graph

    Parsed model

    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;
        }
    }