用包裹仪测量性能

时间:2018-08-20 14:21:10

标签: android performance kotlin parcelable

目前,我拥有大约100个Pojo,可实现可序列化并在整个应用程序中传递,因为我希望随着应用程序的增长会越来越多,并且最好使用宗地包裹。

会不会有明显的性能提升,我该如何衡量?

我了解android studio profiler等,但并不清楚我会在哪个区域看到性能提升,即整体应用速度,内存消耗等。

还有,在进行此更改时要注意什么?

1 个答案:

答案 0 :(得分:0)

根据Philippe Breault's benchmarkParcelableSerializable快得多。他在3种不同的设备上进行了测试,分别使用Android版本2.3.3和4.2.2。

您可以在下面看到结果。

benchmark

  • 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

还有related answer on why you should use Parcelable