Вчера получилось добиться хороших успехов в закрашивании треугольника с помощью градиентов. Изначально мой первый (кривоватый) алгоритм рисовал ~31000 треугольников за 5 секунд. Когда у меня таки получилось (с помощью форума по flash-у на adobe.com) сделать это с градиентом (идеальное качество), скорость была 6800 треугольников за 5 секунд. мдаа, негусто. Долго оптимизировал, в итоге кривоватый алгоритм тоже немного ускорил - до 36000, а с градиентами - до 80000! Т.е. оптимизацией добился более чем 10-кратного прироста скорости.
Что в процессе выяснилось:
если есть

Код:
var m = new Matrix();
то

Код:
m.createGradientBox(...)
- на удивление очень тормозная операция!
я делал 3 таких операции на треугольник, при этом всегда одинаковые.
вынес эти вызовы вовне и сохранил 3 матрицы в переменных, итог:
скорость выросла с 7000 до 24000 за 5с.
теперь colorTransform. я делал как написано в help-e:

Код:
// tri1.l.l1 is a MovieClip
var ct = tri1.l.l1.transform.colorTransform;
ct.redMultiplier = r1;
ct.greenMultiplier = g1;
ct.blueMultiplier = b1;
tri1.l.l1.transform.colorTransform = ct;
первая строчка этого кода реально тормозит! оптимальный вариант:

Код:
// outside the triangle loop
tri1.ct1 = new ColorTransform();
...
// inside the triangle loop
var ct = tri1.ct1;
ct.redMultiplier = r1;
..
tri1.l.l1.transform.colorTransform = ct;
замена трёх комплектов colorTransform-ов прибавила скорости с 25000 до 33000.
или например вот это:

Код:
var matrix = tri1.transform.matrix;
matrix.a = ....
tri1.transform.matrix = matrix;
заменяю на

Код:
// outside the loop
tri1.matrix = new Matrix();
...
// inside the loop
var matrix = tri1.matrix;
matrix.a = ...
tri1.transform.matrix = matrix;
скорость выросла с 33000 до 37000
ещё кое-какие алгоритмические улучшения увеличили скорость до 48000. потом я вообще офигел... сделал так:

Код:
// outside the loop
var ttfm = tri1.transform;
var l1tfm = tri1.l.l1.transform;
var l2tfm = tri1.l.l2.transform;
var l3tfm = tri1.l.l3.transform;
...
// inside the loop
...
// everywhere, use ttfm and l?tfm instead of tri1.transform etc.
l1tfm.colorTransform = ct;
...
ttfm.matrix = matrix;
скороть выросла с 48000 до 76000! а вот например такое известное для интерпретируемых языков ухищрение как максимальное укорачивание имён переменных не даёт вообще никакого результата. я на 95% уверен, что flash-евский компилятор автоматически переименовывает переменные.
p.s. всё вышесказанное относится к flash 8 only.