| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1743 人关注过本帖
标题:内联函数的测试
只看楼主 加入收藏
parksun
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-11-14
收藏
 问题点数:0 回复次数:10 
内联函数的测试

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

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

2007-11-15 16:25
parksun
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-11-14
收藏
得分:0 
回复:(雨中飞燕)最外面一层for加一个大括号,比如:...
加不加大大括号不会影响i的作用域吧!
2007-11-15 16:28
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
谁叫你用的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
专家分:0
注 册:2007-11-14
收藏
得分:0 
回复:(雨中飞燕)谁叫你用的VC6???你爱加不加叫了...
在VC++6.0里试过了,不可以还是通不过,解释一下,谢谢了,顺便推荐个编译器我试一下....
2007-11-15 16:48
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下这两块
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
专家分:0
注 册:2007-11-15
收藏
得分:0 
学习~~~~~~~~~~~~~
2007-11-15 17:32
luckyday
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-6-20
收藏
得分:0 
看得真累

2007-11-15 19:02
快速回复:内联函数的测试
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017251 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved