Firexel
Откуда взяться изменению скорости работы, если обе сущности - одно и то же?.. В конце концов, лично я пока не попробую, не поверю. Адобы еще в as2 писали о защите данных private, и что?
__etc
Да тест-то простецкий.
Делаем в библиотеке клип, в нем - прямоугольник, linkage class=test2, base class=flash.display.Sprite
Класс основного документа mainDoc

Код AS3:
package {
import flash.display.Sprite;
import flash.system.System;
import flash.display.Shape;
import flash.utils.*;
public class mainDoc extends Sprite {
public function mainDoc() {
var bar:int = System.totalMemory;
var baz:int = getTimer();
trace ("memory: " + bar);
for (var i=0; i<10000; i++) {
var foo:test2 = new test2();
this.addChild(foo);
foo.x = foo.y = i;
}
trace ("memory: " + System.totalMemory + "\t\tdelta=" + (System.totalMemory-bar));
trace ("time: " + (getTimer() - baz) + " ms");
}
}
}
Исполняем, замеряем. Потом то же самое, но у класса test2 (наш клип) base class = flash.display.MovieClip
У меня результаты такие:

Код:
flash.display.Sprite
memory: 6361088
memory: 17371136 delta=11010048
time: 5370 ms
flash.display.MovieClip
memory: 6369280
memory: 17534976 delta=11165696
time: 5325 ms
Разница: 155648b 15.5648 на объект
Ясное дело, что могут быть погрешности, связанные с выделением памяти страницами (мои опыты дают число 4 кб), но это несущественно.
15 байт - это вовсе не "много". Я сейчас проверяю предположение, что класс movieClip не "распался" на дерево классов, а остался целостным контейнером, в котором просто блокируются некие свойства, в стиле asSetPropFlags. Исходя из этой идеи, память на спрайты и память на мувики должна быть одинаковой. Полученная картина похожа на настоящую, 15 байт - заполненные свойства, которых "нет" у Sprite и которые поэтому пусты. Например, свойство name для объекта instance999 займет минимум 12 байтов, ну и так далее.
Впрочем, возможно подстава не "всеобщая", а только в том случае, когда объект делают по библиотечному, а не from scratch, например программа

Код AS3:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.system.System;
import flash.display.Shape;
import flash.utils.*;
public class mainDoc extends Sprite {
public function mainDoc() {
var bar:int = System.totalMemory;
var baz:int = getTimer();
trace ("memory: " + bar);
for (var i=0; i<10000; i++) {
var foo:MovieClip = new MovieClip();
foo.graphics.beginFill(0x00FFFF, 1);
foo.graphics.drawRect(-50, -30, 100, 60);
this.addChild(foo);
foo.x = foo.y = i;
}
trace ("memory: " + System.totalMemory + "\t\tdelta=" + (System.totalMemory-bar));
trace ("time: " + (getTimer() - baz) + " ms");
}
}
}
с тем же изменением (в строке var foo:MovieClip = new MovieClip(); меняем на Sprite) дает совсем другую картину:

Код:
Sprite
memory: 6385664
memory: 35979264 delta=29593600
time: 2924 ms
MovieClip
memory: 6385664
memory: 37036032 delta=30650368
time: 3047 ms
Разница: 1056768 b, на объект: 105.6768
Впрочем, у меня порой получалась и разница поменьше, 97-98 байтов.
Разница по времени незаметна и может определяться иными тормозами компа.
100 байт - это уже существенней, хотя все равно маловато. Очень маловато.
