在循环内部定义变量与在循环外部定义变量,两者的时间与空间复杂度如何?
代码1:inttemp;intj;intsum=0;for(inti=0;i<1000000;++i){temp=0;for(j=0;j<1000000;++j)++te...
代码1:
int temp;
int j;
int sum = 0;
for(int i = 0; i < 1000000; ++i)
{
temp = 0;
for(j = 0; j < 1000000; ++j)
++temp;
sum += temp;
}
代码2:
int sum = 0;
for(int i = 0; i < 1000000; ++i)
{
int temp = 0;
for(int j = 0; j < 1000000; ++j)
++temp;
sum += temp;
}
两个哪个运行更快呢,为什么? 展开
int temp;
int j;
int sum = 0;
for(int i = 0; i < 1000000; ++i)
{
temp = 0;
for(j = 0; j < 1000000; ++j)
++temp;
sum += temp;
}
代码2:
int sum = 0;
for(int i = 0; i < 1000000; ++i)
{
int temp = 0;
for(int j = 0; j < 1000000; ++j)
++temp;
sum += temp;
}
两个哪个运行更快呢,为什么? 展开
4个回答
展开全部
首先,变量的声明是在栈中进行的,而实例化则是在堆中,故栈中只有基础数据与实例的引用。
故上面程序的不同点:
1、在外面的枝好乎定义的变量,只在栈中声明了一次。
2、在里面的定义的变量,循环多少次就在栈中声明了多少次。
3、在内存或说资源节省方面,肯定是在外面定义较好,是摧荐的写法;但是如袜仔果循环数不大,其实也者体现出来的差别也不大。
4、由于实例化的对象都在堆中,故个人认为以上两个基本一样。
在循环次数不多的情况下,差不多。
但如果循环次数非猛悉常大,那肯定是在外面定义变量来的更快了。因为少了每次循环入栈出栈的操作消耗。
故上面程序的不同点:
1、在外面的枝好乎定义的变量,只在栈中声明了一次。
2、在里面的定义的变量,循环多少次就在栈中声明了多少次。
3、在内存或说资源节省方面,肯定是在外面定义较好,是摧荐的写法;但是如袜仔果循环数不大,其实也者体现出来的差别也不大。
4、由于实例化的对象都在堆中,故个人认为以上两个基本一样。
在循环次数不多的情况下,差不多。
但如果循环次数非猛悉常大,那肯定是在外面定义变量来的更快了。因为少了每次循环入栈出栈的操作消耗。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
第一个快,第二个要定义变量和释放内存,第一个只是变量循环赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般情况下,除了变量位置不同以外不会有任何区岁慧别。
进入函数的时候会给所有局部变量预留空间(不会同时使用圆厅的变量会共享空间),函乎腔答数结束的时候整体释放。并不是在定义变量的位置申请,用完了就释放的。
进入函数的时候会给所有局部变量预留空间(不会同时使用圆厅的变量会共享空间),函乎腔答数结束的时候整体释放。并不是在定义变量的位置申请,用完了就释放的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个快吧,
因为第一个乎激,内存在外面,第二键桥个,用汇编来看指岁亮袜令,需要分解,为,定义寄存器,赋值,改,收回寄存器,第一个,就不需要了啊,,
因为第一个乎激,内存在外面,第二键桥个,用汇编来看指岁亮袜令,需要分解,为,定义寄存器,赋值,改,收回寄存器,第一个,就不需要了啊,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询