前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序优化之”变量名长短”,内存逻辑地址,物理地址

程序优化之”变量名长短”,内存逻辑地址,物理地址

作者头像
宣言言言
发布2020-04-08 16:05:05
6000
发布2020-04-08 16:05:05
举报
文章被收录于专栏:宣言(Siam)博客

程序优化为何没有说明”变量名长度”

网上有着不少常见的程序优化点的文章,比如PHP中使用单引号、双引号的性能差别等等。

但这其中并没有说到”变量名长度”会影响性能,那么它为什么不会影响性能呢,就需要引入我们今天要讲的这篇文章的知识了。

编译过程内存地址

我们的程序代码在运行的时候(或者之前)需要先经过编译器的处理,编译成更为底层的代码。

编译时是不分配内存的。此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确。所以声明是给编译器看的。变量名在编译过后的程序中是以内存地址存在的。所以它的长度不会影响程序性能,只会占用你的代码文件大小(基本可以忽略)

引用一下文献说明

接下来,汇编器会将汇编代码转换为二进制目标代码文件。目标代码文件是机器代码的一种形式,它包含所有指令的二进制表现,但是还没有填入全局值的地址。

原文博客

地址

程序如何确认内存地址

我们都知道,所有内存数据都是储存在我们硬件内存条上面的,那么它的空间是固定的,并且某个位置被占用的时候,应该是不能被其他程序使用的,否则将会内存冲突。

(一个空教室,小明已经坐了一个位置,其他同学不能坐在他大腿上了诶)

物理内存地址

上面这个概念就是物理内存地址,描述说明在硬件中实际的储存位置(好比 二排三列)

逻辑内存地址

那么我们的程序在编译完成之后,怎么确定它在运行时到底使用哪一块内存地址呢?

使用的是相对的逻辑内存地址。

比如我们有以下一份PHP代码

代码语言:javascript
复制
<?php
$a = 1;
$b = 3;

那么编译后的程序可能如下(用文字描述)

代码语言:javascript
复制
Location = 向系统申请内存地址,并返回物理内存地址

申请一块内存,储存代码$a的值,对应的物理内存地址为 ·Location + 1·
申请一块内存,储存代码$b的值,对应的物理内存地址为 ·Location + 1 + 1·

这里用1来代表一个变量需要占用的大小(仅仅为了说明,每个语言的数据结构不同)

这就是相对的逻辑内存地址了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序优化为何没有说明”变量名长度”
  • 编译过程内存地址
  • 原文博客
    • 程序如何确认内存地址
      • 物理内存地址
        • 逻辑内存地址
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档