String类型的赋值的一个坏习惯【优化Adobe Flash Platform 的性能.pdf阅读笔记】



ActionScript 3.0 中 getSize() 方法显示对象在内存中占用的字节数。

所有原始类型(String 除外)在内存中都是占用 4 – 8 个字节:

var a:Number;
trace(getSize(a));// 输出: 8
var b:int;
trace(getSize(b));// 输出: 4
var c:uint;
trace(getSize(c));// 输出: 4
var d:Boolean;
trace(getSize(d));// 输出: 4
var e:String;
trace(getSize(e));// 输出: 4


String 类型分配的存储量基于 String 的长度

var str:String;
trace(getSize(str));// 输出: 4
str = "";
trace(getSize(str));// 输出: 24
str = "文字内容";
trace(getSize(str));// 输出: 32


然后想起自己的一个代码书写习惯

var str:String="";
str += "<font color='#ffffff'>";
str += "文字内容";
str += "</font>";


为避免String类型的变量在没有赋值的情况下就被调用时发生“无法访问空对象引用的属性或方法“,所以我习惯在声明String类型的变量时习惯写成 var str:String = “”;

来看一下内存分配情况:

var str:String = "";
trace( getSize(str) );// 输出: 24
str += "<font color='#ffffff'>";
trace( getSize(str) );// 输出: 24
str += "文字内容";
trace( getSize(str) );// 输出: 88
str += "</font>";
trace( getSize(str) );// 输出: 168

实际上还有下面这两种写法

var str:String = "<font color='#ffffff'>文字内容</font>";
trace(getSize(str) );// 输出: 96
var str:String = "<font color='#ffffff'>" +
 "文字内容" +
 "</font>";
trace(getSize(str) );// 输出: 96

很显然第后面两段代码执行起来更省资源,所以字符串内容尽量写成一行,字符串内容较多时每行的代码用+号结尾,声明变量时尽量不赋值。



猜你喜欢

转载自blog.csdn.net/hufang360/article/details/38546523
今日推荐