优化 UI 应用启动时间的方法

优化 UI 应用启动时间的方法:

  • 懒启动:

    将与启动主界面无关的代码安排到启动之后再执行。可以使用多线程技术来低耦合地达到这一点。

  • 使用缓存、池技术:

    某些事项如网络连接、数据库连接等往往有如下特点:单次来看,不算特别耗时,但连续重复执行这种操作时,累积的时间还是非常可观。对于这种操作,如果需要连续重复执行,可以考虑使用如下技术:

    • 缓存技术:只有第一次请求资源时是真实的请求,同时将这第一次请求的资源缓存。然后以后请求资源时都是从此缓存中读取数据。不过要注意,使用此技术要考虑脏读的问题。
    • 池技术:事先先在空闲时间中预建立一些连接或申请一些资源,这些资源不会在未来被使用完后立刻丢弃,而是不断回收重复使用。这样到以后真正请求多次资源时,可以减少请求的总成本。
  • UI 代码与非 UI 代码分离:

    将与 UI 界面元素显示无直接关系的代码从 UI 线程 中剥离。不要将这些代码放到 UI 线程UI 线程安全函数 中执行,应该新建线程来执行这些无关代码。

  • 锁粒度检查:

    减少上锁的个数、次数与粒度。能用 volatile 就不要用锁,能锁局部就不要锁方法。

  • 使用 Thread.sleep(0) 来触发线程调度:

    • 在多线程同步中,可能需要设定一个非阻塞请求循环来不断请求某资源。这种请求有可能会大幅度占用 CPU 资源,抑制其它线程的执行,从而导致短期死锁。应该在这种请求循环中插入方法 Thread.sleep(XXX) 来让出此线程的 CPU 使用权,从而使其它线程得以过多地执行,来结束这种短期死锁。
  • 普通的时间优化检查:

    • 能重用同一个变量就尽量重用,不要每次都新建一个变量。

      • 能用单例模式就尽量使用单例模式。

      • 将循环中的变量创建移动至循环之前创建。

  • bug 检查:

    • 记录多线程执行时的时间日志信息,用于排错。

    • 对多线程、锁的逻辑进行检查,避免短期死锁。

      • 一般说来,如果各个并发线程相互独立,应该会具有不可再现性。将应用多次运行时,这些线程启动的先后顺序将不同。

        如果发现实际上并不是这样,这些线程每次启动的先后顺序都是一样的,说明这些线程中可能有某种依赖关系。有某种依赖关系意味着这些线程不能充分的并发执行,从而影响多线程的效益、降低应用运行效率。如果这些依赖关系本不应该存在,那就说明应用的代码逻辑有问题。有某种依赖关系有可能源于上锁。应当排查这些线程的内部运行机制。

    • 检查是否有冗余代码、重复代码。

      • 在项目较大时,常常会出现反复初始化、过度封装、过度执行为保证安全的冗余代码。应该仔细排查、重构这些代码。

优化 UI 应用启动时间的方法相关推荐

  1. 零基础小白怎么自学UI设计?自学UI设计有什么方法?

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 零基础小白怎么自学UI设计?自学UI设计有什么方法?学ui设计,相信大家的第一选择就是想着自学.毕竟报班的费用不便宜 ...

  2. Android-性能优化-UI优化

    Android-性能优化-UI优化 相关系列 Android 性能优化-UI优化 Android 性能优化-内存优化 概述 Android 应用的卡顿,丢帧等,这些影响用户体验的因素绝大部分都与 16 ...

  3. 性能优化的一般性原则和方法​​​​​​​

    看了一篇详细介绍性能优化的博文,感觉很不错,特转载自此.原文地址:性能优化的一般性原则和方法 正文 作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应 ...

  4. Unity文档——优化UI控件

    优化UI控件 版本检查:2017.3 - 难度:高级 Optimizing Unity UI指南的这一部分重点介绍特定于某些类型的UI控件的问题.虽然大多数UI控件在性能方面都相对类似,但两个突出显示 ...

  5. SSH配置优化和慢的解决方法

    SSH配置优化和慢的解决方法 参考文章: (1)SSH配置优化和慢的解决方法 (2)https://www.cnblogs.com/kaishirenshi/p/9495997.html 备忘一下.

  6. .NET一个线程更新另一个线程的UI(两种实现方法及若干简化)

    本片博文接上一篇:.NET多线程执行函数,给出实现一个线程更新另一个线程UI的两种方法. Winform中的控件是绑定到特定的线程的(一般是主线程),这意味着从另一个线程更新主线程的控件不能直接调用该 ...

  7. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  8. Android非UI线程更新UI的几种方法

    2019独角兽企业重金招聘Python工程师标准>>> Android用于实现非UI线程与UI线程的交互方法如下: 1.Handler 2.Activity.runOnUIThrea ...

  9. 割线法求解过程_求解稀疏优化问题2——临近点方法+半光滑牛顿法

    这篇文章是我之前一篇文章的兄弟篇,没看过的可以看下面这个. 邓康康:求解稀疏优化问题--半光滑牛顿方法​zhuanlan.zhihu.com 我们考虑的问题仍然是如下的一般问题: 其中 ,并且 特别大 ...

最新文章

  1. 文字超过省略_从楚篆到楚玺的文字结构
  2. Cadence快捷键设置亲测有效!
  3. win10系统下多python版本部署
  4. 中国钢筋加工设备运营现状与未来前景规划报告2022-2028年版
  5. Vue父子组件通信小总结
  6. R:matlab交互,数据调用
  7. java正则表达式的菜鸟使用分析
  8. 万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)
  9. Linux NFS服务器的安装与配置(最简单的文件共享集群)
  10. java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java)
  11. mybatis 二级缓存失效_二级缓存updateBatchById失效
  12. sentinel控制台无数据解决
  13. Python学习笔记之函数(四)
  14. Java方法及构造方法
  15. 拓端tecdat|R语言对股票风险“溃疡指数”( Ulcer Index)曲面图可视化
  16. 新路由3 高恪魔改固件+底包
  17. 英雄联盟 python 刷等级_厉害了,30行python代码爬取英雄联盟全英雄皮肤
  18. [免费分享]微信小程序从入门到精通视频教程 [8.2G]
  19. 范型方法 范型参数 范型返回值
  20. 第二节 LwIP简介

热门文章

  1. 降低成本,提高生产力—8句话讲清RPA的部署
  2. SUSE 开发者提议在 GCC 编译器中用 Python 替代 AWK
  3. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.
  4. C# 效率也不是很差嘛
  5. 10 分钟学会 5 个酷炫 Linux 命令
  6. oracle 数据 导出 excel 自动分多个文件,从oracle数据库中导出大量数据到excel中为什么自动分成了好几个excel文件《excel表格新手入门》...
  7. Nacos自定义扩展的 Data Id 配置
  8. 线程回顾Thread
  9. 事务注解 @Transactional
  10. 策略模式Strategy Pattern应用场景