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

时间:2011-02-17 04:46:59

标签: c++ qt user-interface performance

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

如何让我的应用程序看起来更快?

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

4 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:1)

您可以在加载时使用显示有趣内容的标准技巧。

就像许多游戏现在在加载时显示一两个小费

答案 2 :(得分:1)

在我看来,你只是猜测所有这些时间都被烧毁了。 “从磁盘读取”在我的候选人名单中不会很高。详细了解真正的内容。

使用合适的个人资料。

答案 3 :(得分:0)

当然,分析是给定的。

最有可能的是,您可能会发现I / O很大 - 读取您的启动文件。正如bdonlan所说,推迟工作是一种标准技术。谷歌'懒惰的评价'。

您还可以考虑缓存不会更改的数据。以更快的格式保存缓存,例如二进制。如果您碰巧将大型静态数据集读入类似数组的内容,这将非常有用。