common sub-expression elimination

the following code contains common sub-expression:

for (var i=0; i<scrItems.length; i++){
 dsetItems[i].name = srcItems[i].name;
 dsetItems[i].value = srcItems[i].value;
 dsetItems[i].id = srcItems[i].id;
 dsetItems[i].data = srcItems[i].data;
}

the code runs faster if factor out the CSE’s:

for (var i=0; i<scrItems.length; i++){
 var destItem = destItems[i];
 var srcItem = srcItems[i];

 dsetItem.name = srcItems.name;
 dsetItem.value = srcItems.value;
 dsetItem.id = srcItems.id;
 dsetItem.data = srcItems.data;
}

many compliers can factor out CSE’s automatically.
ActionScript can’t do this yet, so factoring CSE’s yourserlf will provide performance benefits.
Expect to see many complier optimizations in the future.

factoring out – 반복되는 구문요소를 제거합니다.