bool vs BOOL, which fast?

cfpp1234 2003-10-22 04:45:55
I written a function, that function must return a true or false.

(VC++ version)
BOOL IsOK() {
BOOL yes ;
// Do something
return yes ; // I check the BOOL is size of 4 byte (Microsoft define the BOOL is a int)
}

(C++ standard version)
bool IsOK() {
bool yes ;
// Do something
return yes ; // I check the bool is size of 1 byte
}

Check return value method is:
int size = sizeof( IsOK() ) ;

Now question is, which function return the value is most fast ?


...全文
130 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyangcheng 2004-01-09
  • 打赏
  • 举报
回复
在VC++ 6.0下面TRUE與true有何區別?
Wolf0403 2003-10-23
  • 打赏
  • 举报
回复
别的编译器可能需要自己 #define BOOL int
但是,有谁熟悉 C99 标准的?真的有 bool type 吗?还是只有 C++ 98 才有?
fifo333 2003-10-23
  • 打赏
  • 举报
回复
返回值是按值传递的,所以使用1byte的bool估计比4byte的BOOL要快,占用空间也要小。而且vc也提供bool支持,但是别的编译器不一定提供vc的BOOL。
我水平也不高,请专家指教。
chanet 2003-10-23
  • 打赏
  • 举报
回复
编译的话,可能是 bool 快点。(标准)

运行的话,都一样吧 :(
cfpp1234 2003-10-22
  • 打赏
  • 举报
回复
我想問的是當一個函數傳回一個值時,它所產生的暫時物件以及它的體積,
和所產生的過程.而影響的速度問題.
我那麼看重一個bool是因為我的工作是計算Tetrahedron(四面體)配合OpenGL的3D畫圖,
每次要處理差不多400000個Tetrahedron,每次運算都超三分鐘,(實在做什麽我是不可以說的)
在這樣的情況下光是算法,還不夠的,須要看重每一個暫時物件對速度的影響.
還有我們公司的軟件在一年前已經未有再用汇编了, 因為我們公司現在是同時提供
Window version & MAC OS X version, 所以我們的程式碼一定是用 Visual C++ 和
CodeWarrior C++ MAX OS X.

有高手對傳回值的內部過程有認識嗎?
fifo333 2003-10-22
  • 打赏
  • 举报
回复
Lymtics(日落河长)将的有道理。但我觉得对于C还是值得考虑一下的,尤其是嵌入式系统中。
如果嵌入式系统中使用了C++(已经有这个迹象了),也有考虑的价值。但是不比过多考虑。
fifo333 2003-10-22
  • 打赏
  • 举报
回复
占用的空间不同,vc中的BOOL是用int(4字节)重定义的,ISO C++中是内建类型(1字节)。
ttlb 2003-10-22
  • 打赏
  • 举报
回复
不好意思,又说错了,对不起大家了。应该是
sizeof(bool) == 1
sizeof(int) == 4
Lymtics 2003-10-22
  • 打赏
  • 举报
回复
用了这种(高级)语言,我从来没打算在这些地方考虑优化.毕竟高级语言给了我们一种规范,一种(比较)通用的规范所以,在VC++中,考虑速度重要的是算法,数据结构,而不是这种局部的小东西..如果你一定要从VC++中去这样优化程序建议你去学汇编,那儿没这么多的规则..你想这么优化都行一个BOOL,bool 1/8 个字节,一个EAX可以带32个BOOL(bool).如果你选择了VC++,那就不要管他,这是编译程序的问题,跟我们的程序优化没什么关系..选择了VC++,这些问题就不该让我们考虑,否则还不如学汇编.我们只要知道BOOL,bool是表示true/false就够了,其他让编译器做就可以了.(如果你还不满意的话,你就做一个编译器吧...)
Wolf0403 2003-10-22
  • 打赏
  • 举报
回复
sizeof(bool) == 1
sizeof(int) == 4
Andy84920 2003-10-22
  • 打赏
  • 举报
回复
Wolf0403(完美废人) is good!
ttlb 2003-10-22
  • 打赏
  • 举报
回复
在vc里效率应该是一样的,因为 bool 和 BOOL 都是 4 个字节,但我会选择 bool,因为这是标准。
ttlb 2003-10-22
  • 打赏
  • 举报
回复
不好意思,没看清题目
ttlb 2003-10-22
  • 打赏
  • 举报
回复
vc 中 BOOL 的定义如下:
typedef int BOOL;
BOOL 实际上是 int;
Wolf0403 2003-10-22
  • 打赏
  • 举报
回复
Ye, right, you've been writing a function that would return a value which is either true or false, and you don't know which one is better suited for this, the bool type of the BOOL type, right?
I'm telling you, that BOOL, which is int underlying, takes 4 bytes (32 bits on PCs) in memory. And the bool type, which only have true or false as its value ,takes only one byte (8 bit) in the memory. So you can decide then.
Good luck
sham2k 2003-10-22
  • 打赏
  • 举报
回复
我认为没差别。
大家都返回一个基本类型,估计也不需要额外的指令。
查查编译后生成的代码就知道了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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