![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 11
|
вот такой вопрос: отрожается ли как-нибудь длинна имен полей и методов на скорости выполнения программы. ведь, как я понял, даже после транслирования в байт код именна остаются неизменными для сохраниения возможности манипуляции клипом извне. есть ли разница, например я назову метод btnSetScrollPositionOnRelease() или f1()?
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
На такой вопрос легко получить ответ:
у меня выводит 793 и 803 |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 11
|
спасибо, как видно: разница не такая уж и большая. осмысленные имена рулят)
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Ну не знаю, я поставил проверку на интервал - короткая стабильно обгоняет. Для чистоты эксперимента поменял функции местами - длинная снова отстает.
Где-то я вроде читал про имена переменных длиннее 8 символов. Ощущение есть такое. У меня получилось в среднем 4% разницы, пока чай пил. Последний раз редактировалось Kikasso; 28.08.2007 в 03:34. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
У меня длинная всегда "чуть" быстрее. Так, что "твоя" закономерность не подтвердилась
![]() Я ж говорю, что метод не точный. С его помощью можно судить о порядке скорости, но ни как ни о 100% точности. И разница при таком числе итераций роли не играет. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Разницы вообще нет никакой. Хоть километровые пишите.
Вызов метода происходит по ссылке, а не по имени. Даже если и по имени, скорость поиска метода от длины строки никак не зависит. Загляните в спеку по байткоду, е-мае, а не делайте совершенно сомнительные тесты. Вся несостоятельность теста проявляется, если использовать имена одинаковой длины. Кстати, вот, что мне выдал трейс при двух запусках (для функций с разными длинами имен): Цитата:
Последний раз редактировалось etc; 28.08.2007 в 10:08. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Я нашел откуда "ощущение осталось" - это из другой оперы. http://php.spb.ru/php/speed.html#2
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 11
|
может я конечно много всего не понимаю, но байткод же конечный этап трансляции, вот, например, там есть строка:
тоесть в этот момент плеер должен среди всех переменных найти переменную с именем "а". значит должен быть какой-то ящик, которому на вход должно приходить имя переменной, а на выход он должен давать ее значение. но так-как на вход ему приходит только текстовое имя, значит у него должен быть какой-то мегаалгоритм поиска нужной переменной по имени, так что пиоск среди переменных с более-менее похожими длинными именами должен быть дольше. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Неправда. Длина строки никоим образом не влияет на скорость поиска.
Этот «ящик» называется стек. А в данном случае произошла ретрансляция пи-кода (чтобы читать было проще и не смотреть каждый раз в словарь). В реальности в push в байт-коде написан индекс элемента из словаря констант. Т.е., примерно так: Например, код: Пи-код, выдаваемый flasm-ом (чаще всего): Смотрим байт-код: Или так: 88 06 02 00 61 00 62 00 = constants 'a', 'b' 96 07 00 08 00 07 0A 00 00 00 = push c:0, 10 1D = setVariable 96 04 00 08 01 08 00 = push c:1, c:0 1C = getVariable 1D = setVariable 00 = end Я не знаю точного механизма работы getVariable и что происходит в памяти, но уверен, что длина имени никак не повлияет на скорость нахождения необходимой переременной в памяти, в текущем пространстве. Потому как происходит перебор всех объектов в данной области видимости и запрос имени. Если имя совпадает с переданным (а имя, скорее всего, является тем же Dictionary Lookup, т.е. простым индексом), то в стек помещается ссылка на объект в памяти. И поиск, как я уже говорил, скорее всего идет по индексу, а не по имени, как таковому. А при таком подходе длина имени никак не повлияет на скорость. Даже если и по имени, то скорость будет зависеть от количества объектов в памяти (в конкретной области видимости), а не длины имени. Последний раз редактировалось etc; 28.08.2007 в 12:44. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|