博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
时间复杂度_函数传参、传引用、传指针
阅读量:4156 次
发布时间:2019-05-26

本文共 1751 字,大约阅读时间需要 5 分钟。

时间复杂度_函数传参、传引用、传指针

实验开始:

#include 
#include
#include
using namespace std;#define NODE_SIDE 1000 // 1000~1000000time_t startTime, endTime;struct Node{ int num[NODE_SIDE];};void testByValue(Node a){}void testByReference(Node &a){}void testByPointer(Node *a){}int main(){ long long int TEST_TIME; Node n; n.num[0] = 0; //why int i; for(int j = 1; j <= 1000; j *= 10) //enlarge TEST_TIME { TEST_TIME = 1000000 * j; i = TEST_TIME; startTime = clock(); while(i--) { testByValue(n); } endTime = clock(); cout << "TestByvalue: NODE_SIDE(" << setw(7) << NODE_SIDE << "), TEST_TIME(" << setw(10) << TEST_TIME << "), cost :" << setw(7) << (endTime - startTime) << " ms." << endl; i = TEST_TIME; startTime = clock(); while(i--) { testByReference(n); } endTime = clock(); cout << "TestByReference: NODE_SIDE(" << setw(7) << NODE_SIDE << "), TEST_TIME(" << setw(10) << TEST_TIME << "), cost :" << setw(7) << (endTime - startTime) << " ms." << endl; i = TEST_TIME; startTime = clock(); while(i--) { testByPointer(&n); } endTime = clock(); cout << "TestByPointer: NODE_SIDE(" << setw(7) << NODE_SIDE << "), TEST_TIME(" << setw(10) << TEST_TIME << "), cost :" << setw(7) << (endTime - startTime) << " ms." << endl; } return 0;}

运行上述代码,实验中可以改变NODE_SIZE的值(1000~1000000)。
条件:NODE_SIZE为1000,实验环境为MinGW。(最后的结果 ms并未除以CLOCK_PER_SEC, 不同机器结果可能会有细小的差异。)
某一次的运行结果:
能得到什么结论呢?

1、传值的速度比传引用、传指针的速度慢很多,当传递的参数大小变大时,这个速度的差距会更为明显;
2、当值的大小是原来的十倍时,传值的所需时间并不是原来的十倍;
3、当值的大小变大时,传引用和传指针的所需时间并没有太大改变。
传值给函数调用带来的时间浪费是巨大的,因为传值伴随着值的复制。

你可能感兴趣的文章
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
性能扩展问题要趁早
查看>>
MySQL-数据库、数据表结构操作(SQL)
查看>>
OpenLDAP for Windows 安装手册(2.4.26版)
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC和Struts2的比较
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>