我目前在C ++和Qt中有一个GUI单线程应用程序。加载(从磁盘读取)和关闭约5秒钟(保存设置,完成连接,......)需要1分钟。
如何让我的应用程序看起来更快?
我的第一个想法是让应用程序的服务器组件完成所有工作,而GUI组件仅用于显示。通过套接字,管道或内存映射完成通信。这似乎是一种过度杀伤(在开发方面的努力),因为我的应用程序仅供少数人使用。
答案 0 :(得分:5)
第一步是开始分析。使用实际的,低开销的分析工具(例如,在Linux上,您可以使用oprofile),而不是猜测。你的应用正在做什么在一分钟内启动它需要什么?任何工作都可以推迟到以后,或者可能完全跳过吗?
例如,如果您正在加载(例如)文档模板列表,则可以将其推迟到用户要求您创建新文档。如果您正在扫描系统以获取字体列表,请从上次启动时加载缓存列表并使用该列表,直到您在单独的线程中完成更新字体列表。这些只是示例 - 使用分析器来确定时间实际发生的位置,然后从最大时间数字开始攻击代码。
无论如何,要记住一些更有效的方法:
对于关机时间,请立即隐藏您的GUI,然后在后台关闭这五秒钟。只要用户没有注意到工作,它也可能是即时的。
答案 1 :(得分:1)
您可以在加载时使用显示有趣内容的标准技巧。
就像许多游戏现在在加载时显示一两个小费
答案 2 :(得分:1)
在我看来,你只是猜测所有这些时间都被烧毁了。 “从磁盘读取”在我的候选人名单中不会很高。详细了解真正的内容。
使用合适的个人资料。
答案 3 :(得分:0)
当然,分析是给定的。
最有可能的是,您可能会发现I / O很大 - 读取您的启动文件。正如bdonlan所说,推迟工作是一种标准技术。谷歌'懒惰的评价'。
您还可以考虑缓存不会更改的数据。以更快的格式保存缓存,例如二进制。如果您碰巧将大型静态数据集读入类似数组的内容,这将非常有用。