LoganSquareparsingAndroid库:反馈,基准,优点,缺点

我使用Jackson和DataBind库来parsingjson并映射它的java对象。 我也使用Gson的其他项目不需要perf。

2月17日, LoganSquare图书馆首次发布,承诺速度比Gson快4-10倍。

  • LoganSquare比Gson / Jackson没有什么优势?
  • 优点和缺点?
  • 你有生产应用的基准吗?
  • 是否足够稳定的生产应用程序?

我知道这可能是一个主要的意见基础问题,所以尽可能的技术和具体,并根据真实的数据的答案。

Solutions Collecting From Web of "LoganSquareparsingAndroid库:反馈,基准,优点,缺点"

那么要清楚,如果您将应用程序发布到具有ART的设备,您将通过parsing获得巨大的速度优势。

所以我会用logansquare解释我的经验。

优点:

  • 易于使用 :使用Gson,你必须使用Type来parsingjson数组到一个对象列表中,在loganSquare中它就像LoganSquare.parseList()
  • 更快 :在任何设备(自己testing)它稍快。
  • 更快 :在ART设备中,它的速度差距真的是巨人看到他们的基准
  • RetroFit友好 :是的,它与改造发挥很好。

缺点:

  • NO REALM DB :到目前为止我无法使用Realm db运行(我还没有尝试过)

  • 自定义types适配器 :找不到types适配器或类似的东西,但我不知道。

在这里看他们的基准

这是我的糟糕的基准testing结果(这不是一个适当的基准,但它是一些东西):模拟器nexus 5,与DalvikVM,4.2软糖

基准

解析时间表

解析时间图

parsing模型

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

我使用Android 6.0.1在Nexus 5设备上运行LoganSquare Benchmark项目,结果如下:

LoganSquare基准截图

另外,在短时间内使用lib之后,我的优点和缺点如下:

优点

  1. 在parsing和序列化方面真的很快
  2. 小型图书馆规模
  3. 方便列表parsing和序列化的方法
  4. 有用的转换器
  5. 编译时错误而不是运行时间

缺点

  1. 没有太多的文档,也没有太多的问题和答案StackOverflow 🙂
  2. 支持的types不多
  3. 只有地图集合中支持的string键

我写了一个示例项目来了解LoganSquare是如何工作的,同时也是一篇博客文章 ,所以请查看更多信息。