无心人 发表于 2009-2-24 21:27:06

关于VC高效函数调用的问题

1、纯C/C++代码如果同时用inline __fastcall 修饰,是否管用,是否比单独的inline和__fastcall要稍微的高效和快速些?
2、内嵌汇编的naked函数是否能用inline __fastcall修饰,有效果么?

liangbch 发表于 2009-2-24 21:42:38

我觉得如果使用inline关键字,就没有必要在使用__fastcall了。

无心人 发表于 2009-2-24 21:50:19

o

一堆naked汇编再加快速度
怎么做?

gxqcn 发表于 2009-2-25 07:35:45

估计这得取决于编译器的智能程度。

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

我的做法是:不直接指定哪个函数是 inline,但编译选项中含 /Ob2,让编译器自己决定去。
还有一种做法是设定:#pragma auto_inline( [{on | off}] )

无心人 发表于 2009-2-25 07:56:59

这里还掺和了内嵌汇编的函数!!!
要高效的汇编

但不知道,汇编函数会自动展开么?

mathe 发表于 2009-2-25 08:53:27

纯汇编的函数不会展开的(除非在代码生成的时候在作展开,可能性很小)。
不过如果将汇编嵌入到一个c函数里面,那么这个c函数还是可能被展开的。
只要你使用了汇编,通常会阻止编译器的优化。所以不是十分必要,不要用嵌入汇编。而且即使使用了,也要非常小心

无心人 发表于 2009-2-25 09:10:39

呵呵

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

另外, P4 2.0级的时间是810秒

mathe 发表于 2009-2-25 09:49:52

810秒是什么时间,完全处理一个文件?怎么这么慢,是不是你处理的流程不对?
我这里通常是150秒左右。慢一点的机器也就200多秒呀
页: [1]
查看完整版本: 关于VC高效函数调用的问题