找回密码
 欢迎注册
查看: 7943|回复: 7

[求助] 关于VC高效函数调用的问题

[复制链接]
发表于 2009-2-24 21:27:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
1、纯C/C++代码如果同时用inline __fastcall 修饰,是否管用,是否比单独的inline和__fastcall要稍微的高效和快速些?
2、内嵌汇编的naked函数是否能用inline __fastcall修饰,有效果么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-24 21:42:38 | 显示全部楼层
我觉得如果使用inline关键字,就没有必要在使用__fastcall了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-24 21:50:19 | 显示全部楼层
o

一堆naked汇编再加快速度
怎么做?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-25 07:35:45 | 显示全部楼层
估计这得取决于编译器的智能程度。

inline 修饰符并非强制性的:编译器有可能会置之不理。
比方说,递归函数通常不会被编译成 inline。
编译器 有权自行决定是否要定义成 inline 的函数编译成 inline。

我的做法是:不直接指定哪个函数是 inline,但编译选项中含 /Ob2,让编译器自己决定去。
还有一种做法是设定:#pragma auto_inline( [{on | off}] )
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-25 07:56:59 | 显示全部楼层
这里还掺和了内嵌汇编的函数!!!
要高效的汇编

但不知道,汇编函数会自动展开么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-25 08:53:27 | 显示全部楼层
纯汇编的函数不会展开的(除非在代码生成的时候在作展开,可能性很小)。
不过如果将汇编嵌入到一个c函数里面,那么这个c函数还是可能被展开的。
只要你使用了汇编,通常会阻止编译器的优化。所以不是十分必要,不要用嵌入汇编。而且即使使用了,也要非常小心
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-2-25 09:10:39 | 显示全部楼层
呵呵

我昨天测试的汇编和非汇编的差距很小
但,都不是你原始的带除法版本

另外, P4 2.0级的时间是810秒
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-25 09:49:52 | 显示全部楼层
810秒是什么时间,完全处理一个文件?怎么这么慢,是不是你处理的流程不对?
我这里通常是150秒左右。慢一点的机器也就200多秒呀
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-29 01:40 , Processed in 0.044079 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表