English 中文(简体)
行动标注 3 中循环的变量声明性效绩
原标题:Variable declaration performance on loops in Actionscript 3

我个人测试显示, 健康标准并非最佳标准。

循环中声明变量, 使其接近其范围, 并让方法更快地达到, 但分配更多的内存或声明 < strengen@ em > 外的 < / em/ strong > 范围, 以保存内存分配, 并在遥远的场合中增加处理 。

我的结果显示,方法B更快(有时), 我想知道周围的背景。

结果不尽相同,而且不是什么笔刷大师。

你们怎么想的?

" empástrong > 方法A " (/强%%/%em)

var object:Object = new Object();
var loop:int = 100000
for (var i:int = 0; i < loop; i++)
{
    object = new Object();
    object.foo = foo;
    object.bar = bar;
}

" method B "

var loop:int = 100000
for (var i:int = 0; i < loop; i++)
{
    var object:Object = new Object()
    object.foo = foo;
    object.bar = bar;
}
最佳回答

焊接器;它们具有等同的音质,性能相同。

one 变量被称为 object 。 ActionScript, 如 JavaScript, “hoists” 声明。 也就是说, var 只是一个函数范围注释 。 这与C 和 Java 不同, 在第二例中创建了一个新的范围( 因而是新的变量) < em>

然而,AS没有区别。引擎 < em> 有效处理第2个代码与第2个代码完全相同。 (如上所述,我宁愿“把 var 贴近使用地点”,但理解它与范围无关,“em>对性能 没有影响。 )

ActionScript 3.0:变量 ,特别是范围部分:

变量的范围是您代码中可以通过词汇引用访问变量的区域...在 ActionScript 3.0 中,“强度”变量总是被指定为声明函数或类别的范围。

快乐的编码。

问题回答

AS3 编译器将所有变量声明移动到方法的顶部,即所谓的可变起动。变量的最小范围是一个完整的方法。您的方法 B 相当于以下方法:

var loop:int = 100000;
var i:int;
var object:Object;
for (i = 0; i < loop; i++) {
    object = new Object();
    object.foo = foo;
    object.bar = bar;
}

注意它只将声明上移, 而不是与此相关的相关任务。 这就是为什么您在使用它后可以声明变量。 例如尝试此代码 :

trace(a);
var a:int = 10;
trace(a);

这将编译。 它之所以如此, 是因为这个代码相当于 :

var a:int;
trace(a);
a = 10;
trace(a);

也正是由于这个原因,您才能收到重复的变量声明警告,并使用以下代码:

for (var i:int = 0; i < m; i++) {

}
for (var i:int = 0; i < n; i++) { // i is already declared once

}

AS3中的可变范围概念,联署材料不同于C、C++、Java等概念。





相关问题
What to look for in performance analyzer in VS 2008

What to look for in performance analyzer in VS 2008 I am using VS Team system and got the performance wizard and reports going. What benchmarks/process do I use? There is a lot of stuff in the ...

SQL Table Size And Query Performance

We have a number of items coming in from a web service; each item containing an unknown number of properties. We are storing them in a database with the following Schema. Items - ItemID - ...

How to speed up Visual Studio 2008? Add more resources?

I m using Visual Studio 2008 (with the latest service pack) I also have ReSharper 4.5 installed. ReSharper Code analysis/ scan is turned off. OS: Windows 7 Enterprise Edition It takes me a long time ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...