我为游戏制作了一个GUI库.我的测试演示以60 fps运行.当我使用我的库的静态版本运行此演示时,在taskmanager中需要2-3%的CPU.当我使用DLL版本时,它使用大约13-15%.这是正常的吗?是这样,我怎么能优化它?我已经要求它使用/ O2进行大多数功能内联.
Bre*_*ias 16
在DLL有机会执行一次其功能之前,请不要启动性能计时器.这使它有时间加载到内存中.然后启动计时器并检查性能.然后它应该基本上匹配静态lib的那个.
还要记住,DLL的加载位置会极大地影响它加载的速度.DLL的默认基本地址是0x400000.如果您在该位置已经有其他DLL,那么加载过程必须执行一个昂贵的重新寻址步骤,这将使您的时间更加摒弃.
如果您有这样的冲突,只需在Visual Studio中选择不同的基址.
您将有加载DLL的开销(应该只在开始时一次).它与直接调用没有静态链接,因此我预计会有少量开销,但不会太多.
但是,某些DLL将具有更高的开销.我正在考虑COM对象,尽管可能还有其他例子.COM在对象之间的函数调用上增加了很多开销.
如果调用DLL函数,则无法为调用者内联它们.你应该考虑一下你的DLL边界.
可能是你的应用程序有一个小的bootstrap exe,它只是在你的DLL中执行一个主循环.这样可以避免函数调用的大量开销.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |