| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 770 人关注过本帖
标题:内联函数的测试
收藏  订阅  推荐  打印 
parksun
Rank: 1
等级:新手上路
帖子:25
积分:366
注册:2007-11-14
内联函数的测试

#include<iostream>
#include<ctime>

using namespace std;
//----------------------------------------
int calc1(int a,int b)
{
return a+b;
}
//-----------------------------------------
inline int calc2(int a,int b)
{
return a+b;
}
//-----------------------------------------
void main()
{
int x[1000],y[1000],z[1000];
clock_t start,finish;
double dtime;
start = clock();
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
for(int k=0; k<1000; ++k)
z[i] = calc1(x[j],y[k]);
finish = clock();
dtime = finish - start;
cout<<"not using inline: "<<dtime<<" seconds\n";
start = clock();
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
for(int k=0; k<1000; ++k)
z[i] = calc2(x[j],y[k]);
finish = clock();
dtime = finish - start;
cout<<" using inline: "<<dtime<<" seconds\n";
} 怎么输不出结果,编译时i重定义了,没有重定义呀!谁能帮我分析以下.
using namespace std;
//----------------------------------------
int calc1(int a,int b)
{
return a+b;
}
//-----------------------------------------
inline int calc2(int a,int b)
{
return a+b;
}
//-----------------------------------------
void main()
{
int x[1000],y[1000],z[1000];
clock_t start,finish;
double dtime;
start = clock();
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
z[i] = calc1(x[i]y[j]);
finish = clock();
dtime = finish - start;
cout<<"not using inline: "<<dtime<<" seconds\n";
start = clock();
for( i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
z[i] = calc2(x[i],y[j]);
finish = clock();
dtime = finish - start;
cout<<" using inline: "<<dtime<<" seconds\n";
}修改后能输出结果了,但是有时使用内联函数运行所需的时间比不使用还要多,谁能解释以下.

搜索更多相关主题的帖子: 内联  函数  
2007-11-14 14:08
zjhofzj
Rank: 1
等级:新手上路
帖子:10
积分:200
注册:2007-11-14

楼主 你用的是什么编译器 我用的是DEV 第一个完全没问题(我把 void main()改成 int main()和return 0;然后在for循环里加了下花括号 应该没影响吧)至于为什么时间反而长 我把内联直接去掉 弄成 z[i]=x[j]+y[k];结果快了好多 貌似 很神奇 弄不懂 会不会是1。不符合内联的条件 2。把函数加进循环费太多时间(貌似说不通)
如果找出原因不要忘了发上来哦
2007-11-14 21:36
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

最外面一层for加一个大括号,比如:
{
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
for(int k=0; k<1000; ++k)
z[i] = calc1(x[j],y[k]);
}



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-15 00:45
parksun
Rank: 1
等级:新手上路
帖子:25
积分:366
注册:2007-11-14
回复:(parksun)内联函数的测试

我用的是VC++6.0编译器,如果像你那样改的话就失去了程序的含义了..

2007-11-15 16:25
parksun
Rank: 1
等级:新手上路
帖子:25
积分:366
注册:2007-11-14
回复:(雨中飞燕)最外面一层for加一个大括号,比如:...

加不加大大括号不会影响i的作用域吧!
2007-11-15 16:28
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

谁叫你用的VC6???你爱加不加
叫了你加你都不试试的话那偶也没必要给你解释




by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-15 16:31
parksun
Rank: 1
等级:新手上路
帖子:25
积分:366
注册:2007-11-14
回复:(雨中飞燕)谁叫你用的VC6???你爱加不加叫了...

在VC++6.0里试过了,不可以还是通不过,解释一下,谢谢了,顺便推荐个编译器我试一下....
2007-11-15 16:48
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

以下这两块
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
for(int k=0; k<1000; ++k)
z[i] = calc1(x[j],y[k]);
for(int i=0; i<1000; ++i)
for(int j=0; j<1000; ++j)
for(int k=0; k<1000; ++k)
z[i] = calc2(x[j],y[k]);
VC6里就判为重定义,偶叫你加大括号,你一定是没有试,不试就算了



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-15 17:03
swjuen
Rank: 1
等级:新手上路
帖子:9
积分:190
注册:2007-11-15

学习~~~~~~~~~~~~~
2007-11-15 17:32
luckyday
Rank: 1
等级:新手上路
帖子:13
积分:230
注册:2007-6-20

看得真累

2007-11-15 19:02
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.062678 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved