
22.06.2012, 06:51
|
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
|
dkart01, фигурные скобки — это новый объект. То есть можно написать "{}", а можно и "new Object()". Аналогично можно и с массивами — вместо "new Array()" писать "[]".
В приведеном коде я создаю структуру, — у объекта "a" есть свойтво "b", тоже объект. У которого, в свою очередь, есть войство "c", которое тоже является объектом и т.д. И в итоге у свойства "f" (объекта) я создаю поле "someProp", равное 15.
Далее для теста я записываю в переменную t текущее значение таймера (таймер в миллисекундах и считается от начала запуска флэшки). Потом в цикле от 0 до 1000000 (миллион итераций) я прибавляю к переменной "s" значение "someProp" у объекта "f", при этом осуществляя прямой доступ к этому значение, то есть по "a.b.c.d.e.f.someProp". После выполнения цикла вывожу разницу между текущим значением таймера и тем, что я записал еще до начала цикла. Таким образом я получаю время в миллисекундах, потраченое на выполнение этого кусочка кода.
Аналогично и во втором тесте, только там я предварительно закэшировал структуру объектов в отдельную ссылку "q" и в цикле уже обращаюсь через "q.someProp".
Разница в значениях потраченого времени из-за того, что в первом случае используется прямой доступ, а во втором — по ссылке. Если написать третий тест еще и с динамическим доступом, то его результаты будут самыми плохими.
|