使我的桌面应用程序似乎加载/退出更快

Dat*_*Chu 0 c++ performance user-interface qt

我目前在C++和Qt中有一个GUI单线程应用程序.加载(从磁盘读取)和关闭约5秒(保存设置,完成连接,......)需要1分钟.

我该怎么做才能使我的应用程序看起来更快?

我的第一个想法是让应用程序的服务器组件完成所有工作,而GUI组件仅用于显示.通过套接字,管道或内存映射完成通信.这似乎是一种过度杀伤(在开发方面的努力),因为我的应用程序仅供少数人使用.

bdo*_*lan 5

第一步是开始分析.使用实际的,低开销的分析工具(例如,在Linux上,您可以使用oprofile),而不是猜测.你的应用程序在启动的那一分钟内了什么?任何工作都可以推迟到以后,或者可能完全跳过吗?

例如,如果您正在加载(例如)文档模板列表,则可以将其推迟到用户要求您创建新文档.如果您正在扫描系统以获取字体列表,请从上次启动时加载缓存列表并使用该列表,直到您在单独的线程中更新字体列表.这些只是示例 - 使用分析器来确定实际发生的时间,然后从最大的时间数字开始攻击代码.

无论如何,要记住一些更有效的方法:

  • 跳过工作直到需要.如果您正在为不经常使用的某些功能进行初始化,请跳过它直到实际使用该功能.
  • 将工作推迟到启动后.在UI响应时,您可以在单独的线程上处理很多事情.如果您正在收集不经常更改但需要立即更改的信息,请考虑缓存上一次运行中的值,然后在后台更新它.

对于关机时间,请立即隐藏您的GUI,然后在后台关闭这五秒钟.只要用户没有注意到工作,它也可能是即时的.