Цитата:
Оригинал написал(а) Royan
Вот тут CyberMax утверждает, что трансляционный код flesh'a не проводит ни какой оптимизации с чем я не соглашусь.
|
А чего тут не соглашаться-то ? Одни двойные отрицания чего стоят. Не вериш -- посмотри какой-нибудь SWF flasm`ом.
Цитата:
Ради примера можно рассмтреть AS приведенный во втором и третьем пунктах (повторю его здесь)
for (N=i=1; N*=i,++i<=10; ) {
}
var N=i=1;
while (N*=i,++i<=10) {
}
И теперь можно посмотреть как именно раскрывают сей код всякие там ASV
N = (i = 1);
(N = N * i);
while (++i <= 10) {
}
var N = (i = 1);
(N = N * i);
while (++i <= 10) {
}
Сразу замечу, что если написать в Flash 5,0,0,0 (я его качал почти сразу как он вышел) то такая вот конструкция цикла for: "for (N=i=1; N*=i,++i<=10; );" при перчлючении из режима expert в normal у меня вызывала критическую ошибку. В MX все было исправлено. Впрочем кому интересно тот может набрать собственный код, состоящий из каких угодно циклов for и убедиться, что любой сканер при разборе все переворачиват в while
|
Ну так это вовсе не говорит о том, что Flash циклы оптимизирует. Это говорит всего лиш о том, что автору ASV лень было заморачиваться с for-ами и он все циклы декомпилирует во while-циклы. В байткоде for от while не сильно отличается.