c++单层和多层dll是否影响性能

请叫我杨二哥 2015-06-25 04:51:33
我开发了一个程序,程序中有几个dll,我开始的时候只有一个dll当测试程序直接调用这个dll时,
test-》dll2
程序性能(运行时间在ns级)还勉强满足了boss的要求,但是由于某些需求的提出,
我在测试程序和刚开始的那个dll之间添加了一个dll变成了
test->dll1-》dll2
程序的运行性能足足下降了一倍的 比如之前是 1000ns 现在变成了2000ns还有多!

请问 是不是由于中间多加了一个dll导致的性能下降?
...全文
304 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2015-09-03
  • 打赏
  • 举报
回复
本质上是不影响的。 如果影响了,说明你的代码有问题。 或者你的代码运行速度比 调用 DLL中的函数这个简单功能要快。 也就是说,把很简单的逻辑封装到DLL中,并反复调用,这是完全没有必要的。 DLL中起码要实现一点功能吧,略微有点代码,通常都不会比 调用 DLL中的函数要快。 如果你把 int add(int a,int b){return a+b;}; 或者 int four(){return 4;}; 这样的代码封装到DLL中,那真是完全没有必要。
mujiok2003 2015-09-03
  • 打赏
  • 举报
回复
go profiling
fefe82 2015-09-03
  • 打赏
  • 举报
回复
1. 请确认 debug / release ,以及与优化有关的编译参数(包括所有的可执行程序与dll) 2. 找一个 profiler 确认热点位置。
请叫我杨二哥 2015-07-29
  • 打赏
  • 举报
回复
恩 很感谢大家 不过我仍然没有解决这个问题,我的测试方法是: 1 直接生成dll和lib然后直接在外面通过调用接口函数interface1 ,计算时间 得到的平均时间(10次) 为900ns多一点。 2 另外添加一个dll然后在那个dll中使用接口接口函数interface2 调用上面的接口函数interface1 ,仍然计算该接口函数调用时间,计算平均时间为2000ns多一点。 而且测试了很多次 都是在一样的运行环境下运行的。所以我才提出这么一个疑问。
小竹z 2015-06-26
  • 打赏
  • 举报
回复
楼主要实际测试对比,才有可能找到原因。增加dll肯定会带来开销,但是这种开销是否是程序瓶颈,不好说,必须实际测试。
k1988 2015-06-25
  • 打赏
  • 举报
回复
如果每次中间加了一些显式的loadlibrary和getprocadress之类的函数调用的话应该会有影响
moritz_dev 2015-06-25
  • 打赏
  • 举报
回复
10有89是你代碼逻辑有问题,用pstack多執行幾次,看看逻辑卡在那里了。去對應代碼段優化。
taodm 2015-06-25
  • 打赏
  • 举报
回复
你怎么测的1000ns?
yangyunzhao 2015-06-25
  • 打赏
  • 举报
回复
你的代码是跑在操作系统里面的,压根无法避免多重调用的
ztenv 版主 2015-06-25
  • 打赏
  • 举报
回复
至少我认为不是,看看你都改了什么代码吧

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧