|
|
1
5
您需要对应用程序进行概要分析,以确定减速的真正原因。例如,可能大部分时间都花在正在加载的.dll的某个初始化例程上。找到一个好的分析工具,然后确定瓶颈在哪里。 |
|
|
2
5
天哪!减少DLL计数! 当然,如果你要在启动时加载200个DLL,会导致大量的硬页错误,并且需要永远启动(比如3dsmax)。 重新考虑你的动态链接库策略。将许多小的DLL合并为较大的DLL。我很怀疑你是否需要200+。 |
|
|
3
2
我想你需要知道一些事情:
在这种情况下,必须减少DLL的数量。也许你可以合并,但我猜这是一个模块化设计,这意味着,大多数时候,它们不能合并。 您也可以在使用时加载DLL,而不是在打开程序时加载,并且只加载启动时加载程序所需的DLL。 或者,您甚至可以延迟加载DLL,方法是先用必要的DLL启动程序,然后按照使用的重要顺序加载其他DLL。 |
|
|
4
1
如果您可以访问DLL的代码(或者其中的一些代码),那么您可以查找静态链接的糖果。如果你能把它们转换成静态库,你就可以大大加快启动速度。 |
|
|
5
1
使用静态对象的惰性构造。 而不是在启动期间创建全局数据,如:
让他们按需构建以下习惯用法:
如果对象的创建成本很高(例如,必须建立大型查找表或执行大量IO),这将为您节省一些启动时间。 不过,这对加载这些DLL没有帮助。 |
|
6
1
你得到了很好的建议。拥有许多DLL是你现在正在为之付出代价的时尚之一。此外,初始化它们可能比您需要做的要多得多。 有一个简单的方法可以告诉你花了多少时间。在一个IDE下启动应用程序,比如Visual Studio,当它启动时,点击“暂停”按钮并显示调用堆栈。这样做几次。每次,你都会看到它在做什么,最重要的是, 为什么 .如果你看到它花了很多时间去做一些你不真正需要的事情,那么这就告诉你该怎么做。 |
|
|
7
0
一个选项,以及它的纯心智游戏,是提供一个加载的进度条… 如果人们有东西看,它会分散他们的注意力,让他们“感觉”更快,这就是为什么电梯之间有镜子,服务于许多楼层… 不过,这可比不上秒表… 另一种选择是重新编写以使用较少的DLL。下一个问题是你有多少预算(钱/时间) |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |