目前,我拥有大约100个Pojo,可实现可序列化并在整个应用程序中传递,因为我希望随着应用程序的增长会越来越多,并且最好使用宗地包裹。
会不会有明显的性能提升,我该如何衡量?
我了解android studio profiler等,但并不清楚我会在哪个区域看到性能提升,即整体应用速度,内存消耗等。
还有,在进行此更改时要注意什么?
答案 0 :(得分:0)
根据Philippe Breault's benchmark,Parcelable
比Serializable
快得多。他在3种不同的设备上进行了测试,分别使用Android版本2.3.3和4.2.2。
您可以在下面看到结果。
Nexus 10可序列化:1.0004毫秒–可打包:0.0850毫秒-加快10.16倍。
Nexus 4可序列化:1.8539毫秒–可打包:0.1824毫秒-快11.80倍。
Desire Z可序列化:5.1224毫秒–可打包:0.2938毫秒-快17.36倍。
这些数字是针对单个对象的,它通过Bundle
传递了1000次左右。如果您希望增加100多个,那么事情将会迅速升级。
Serializable
是一个标准的Java接口,它倾向于留下很多临时对象,这会触发许多GC事件。
Parcelable
是一个Android界面,旨在解决性能问题,并且它通过不对序列化使用反射来实现。问题是,您必须自己定义序列化。但是与Serializable
对象相比,您将获得巨大的性能差异。
您可以详细了解Parcelable
on the docs。