程序优化为何没有说明”变量名长度”
网上有着不少常见的程序优化点的文章,比如PHP中使用单引号、双引号的性能差别等等。 但这其中并没有说到”变量名长度”会影响性能,那么它为什么不会影响性能呢,就需要引入我们今天要讲的这篇文章的知识了。
编译过程内存地址
我们的程序代码在运行的时候(或者之前)需要先经过编译器的处理,编译成更为底层的代码。 编译时是不分配内存的。此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确。所以声明是给编译器看的。变量名在编译过后的程序中是以内存地址
存在的。所以它的长度不会影响程序性能,只会占用你的代码文件大小(基本可以忽略)
引用一下文献说明
接下来,汇编器会将汇编代码转换为二进制目标代码文件。目标代码文件是机器代码的一种形式,它包含所有指令的二进制表现,但是还没有填入全局值的地址。
原文博客
程序如何确认内存地址
我们都知道,所有内存数据都是储存在我们硬件内存条
上面的,那么它的空间是固定的,并且某个位置被占用的时候,应该是不能被其他程序使用的,否则将会内存冲突。 (一个空教室,小明已经坐了一个位置,其他同学不能坐在他大腿上了诶)
物理内存地址
上面这个概念就是物理内存地址
,描述说明在硬件中实际的储存位置(好比 二排三列)
逻辑内存地址
那么我们的程序在编译完成之后,怎么确定它在运行时到底使用哪一块内存地址呢? 使用的是相对的逻辑内存地址。 比如我们有以下一份PHP代码
<?php $a = 1; $b = 3;
那么编译后的程序可能如下(用文字描述)
Location = 向系统申请内存地址,并返回物理内存地址 申请一块内存,储存代码$a的值,对应的物理内存地址为 ·Location + 1· 申请一块内存,储存代码$b的值,对应的物理内存地址为 ·Location + 1 + 1· 这里用1来代表一个变量需要占用的大小(仅仅为了说明,每个语言的数据结构不同)
这就是相对的逻辑内存地址了。