[nzl1116]晨 语 21:51:27
设置变量值,这个值到底保存在数据段还是堆栈中啊?
[ZZXXQQ] 21:51:54
变量中
[nzl1116]晨 语 21:53:34
我个人猜想,函数的返回值肯定保存在堆栈中
[ZZXXQQ] 21:54:19
未返回时在栈中
[nzl1116]晨 语 21:54:55
但是函数中设置的变量到底保存在哪里,就有点摸不着头脑了
[ZZXXQQ] 21:55:31
变量中
变量保存在堆中
[nzl1116]晨 语 21:56:00
按Z版说的,如果设置的变量多了,CPU会不会很忙呢?
[ZZXXQQ] 21:56:31
CPU不会,内存会
[nzl1116]晨 语 21:58:04
CPU就是协调内存、积存器,内存应该算CPU的一部分吧
[ZZXXQQ] 21:58:30
不是
没学过计算机原理?
[woshilxh]爱摄影 21:59:18
内存自己不会计算吧,就一仓库,z版我说的对么?
[ZZXXQQ] 21:59:43
可以这样理解
[woshilxh]爱摄影 22:00:08
yeah
[nzl1116]晨 语 22:01:46
当改变一个变量的值的时候,CPU就要把后入栈的其他的变量先提取出来,存放在寄存器中,计算之后又要重新入栈,也就是说,变量多了,肯定会影响速度
[ZZXXQQ] 22:02:34
但寄存器是CPU的一部分
[ZZXXQQ] 22:03:33
一般变量不放在栈中,放在堆中
[alwtyp][alwtyp] 22:03:41
CACHE?
[ZZXXQQ] 22:03:58
直接对变量地址进行操作
[nzl1116]晨 语 22:04:06
如果加载函数的时候,是保存在数据段中,好象保存在数据段中的值是不会更改的
[woshilxh]爱摄影 22:04:06
个人理解吧,最快的就是少写变量,尽量用嵌套的方式,就跟击鼓传花一样,从第一个人手里抢过来总比一个一个传过来要快
[ZZXXQQ] 22:04:26
不一定
用变量可以提高计算速度
[alwtyp][alwtyp] 22:04:49
嵌套还不是要读取
[ZZXXQQ] 22:05:05
用空间换时间
[woshilxh]爱摄影 22:05:35
但总是少了排队给人起名这个过程
[nzl1116]晨 语 22:06:11
我觉得还是多写子函数调用比较好
[woshilxh]爱摄影 22:06:27
这个绝对的,深有体会啊,
写一大堆,错了都不知道哪里错了,
[nzl1116]晨 语 22:07:21
子函数调用完了,这个子函数的变量都被清空了,只保存一个返回值
[ZZXXQQ] 22:07:47
返回值不会保存
[alwtyp][alwtyp] 22:07:52
子函数只是方便阅读和调试程序,我觉得速度不一定能提高
[woshilxh]爱摄影 22:08:24
现在cpu速度,提高了也看不出来
[nzl1116]晨 语 22:08:55
而且在执行的时候,变量的读取和存储不影响上级函数保存的变量
[ZZXXQQ] 22:10:11
那要看函数是怎么编的
[nzl1116]晨 语 22:11:41
子函数的返回值就是主函数一个变量值,肯定是要被保存的呀
[nzl1116]晨 语 22:13:09
这个,高飞鸟应该知道的吧?
[ZZXXQQ] 22:14:03
只是随函数的运行结束返回给调用者,如果调用者不放在变量中,返回值就返回到爪洼国去了。
[nzl1116]晨 语 22:17:02
那是肯定的,不弄个SEtq,肯定不会被保存 |