2021-05-26

性能优化

1.布局优化

关于布局优化的思想很简单,就是尽量减少布局文件的层级。进来减少组件的数量,布局中的层级少组件数量少,就意味着Android绘制时的工作量少了,那么程序的性能自然就提高了

优化:删除布局中无用的控件和层次,其次有选择地使用性能比较低的ViewGroup。

采用标签ViewStub,Viewstub组件开始的时候不需要渲染出来,我们通过setVisibility(View.VIVIBLE)和inflate去显示组件。inflate只能够被调用一次,如果多次就会报错。

2.避免过度绘制

过度绘制(Overdraw)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次重叠的 UI 结构里面,如果不可见的 UI 也在做绘制的操作,会导致某些像素区域被绘制了多次,同时也会浪费大量的 CPU 以及 GPU 资源。

如:recyclerview 局部刷新,

列表条目分割线,写到条目的布局中,会出现过度绘制,recyclerview。addItemDecoration实现分割线的添加。

3.绘制优化

绘制优化是指View的onDraw方法要避免执行大量的操作,这主要体现在两个方面

onDraw中不要创建新的局部对象(内存抖动),不仅会占用大量的内存,还会导致系统频繁的gc垃圾回收,减低程序执行的效率。

onDraw中不要做耗时的任务,不能执行大量的循环,循环次数太多会抢占cpu的执行时间,会导致绘制不流畅。

4.内存泄漏优化

内存泄漏是开发过程中的一个需要重视的问题,但是由于内存泄露问题对开发人员的经验和开发意识有较高的要求,因此也是开发人员最容易犯的错误之一。

内存优化:

尽量在开发过程中注意代码的内存泄漏。

通过工具做内存的泄漏分析。

响应速度优化

避免在主线程中做耗时操作。如果有耗时操作一定开启子线程来执行,主线程中执行了太多的任务,导致activity启动的时候黑屏,无响应,甚至anr。Android规定,Activity如果5秒钟之内无法响应屏幕触摸事件或者键盘输入事件就会出现ANR,而BroadcastReceiver如果10秒钟之内还未执行完操作也会出现ANR。

如何避免anr,开启子线程执行耗时操作,然后通过子线程和UI线程的通信来解决子线程执行完以后更新UI的操作。(Handler,AsyncTask,IntentService,RxJava,HandlerThread)

5.线程优化

线程优化的思想就是采用线程池,避免程序中存在大量的Thread,线程池可以重用内部的线程,从而避免了线程的创建和销毁锁带来的性能开销,同时线程池还能有效地控制线程池的最大并法术,避免大量的线程因互相抢占系统资源从而导致阻塞现象的发生。因此在实际开发中,尽量采用线程池,而不是每次都要创建一个Thread对象。

6.动画优化

在实现动画效果时,需要根据不同场景选择合适的动画框架来实现。有些情况下,可以用硬件加速方式来提供流畅度

耗电优化()

https://www.jianshu.com/p/627554db9f60

7.蓝牙(经典蓝牙,低功耗蓝牙)

优化:在不使用的时候尽量关闭

移动网络请求

优化:尽量在wifi的网络中去请求数据。在移动网络情况下,尽量减少网络数据的请求。

WakeLock通过控制系统是否进入休眠。

息屏以后停止所有的动画和所有相关的ui操作

计算优化:除法变乘法,多使用位移运算,可以利用内存来换取计算量(空间换时间)。

GPS耗电

不需要的应用,关闭GPS功能

8.其他性能优化的建议

①避免过度的创建对象

②不要过度使用枚举,枚举占用的内存空间要比整型大

③常量请使用static final来修饰

④使用一些Android特有的数据结构,比如SparseArray和Pair等

⑤适当采用软引用和弱引用

⑥采用内存缓存和磁盘缓存

⑦尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
02-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值