Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Что такое super в перегруженных функциях? Вопрос быстродействия. (http://www.flasher.ru/forum/showthread.php?t=167065)

Seagull 07.09.2011 22:12

Что такое super в перегруженных функциях? Вопрос быстродействия.
 
Что есть этот super.methode()? Это банально вызов метода из базового класса, Со всеми накладными расходами? Или это синтаксический сахар от компилятора?

Ибо вычитал:
Цитата:

Сообщение от Psycho Tiger (Сообщение 890812)
Насчёт this везде ещё соглашусь, однако с точки зрения ООП super всё таки при вызове методов суперкласса писать нужно. Байткод разный получается, так что... лучше переучиваться :)

Байткод разный потому что так - мы работаем с конкретной функцией, а если явно не указали то в рантайме идёт нисходящий поиск по родителям? По хранимым (а они хранятся, насколько я знаю) именам методов классов?


Кроме того там же вычитал про медленность конструктора. Мол он каждый раз просчитывается.

Цитата:

Сообщение от wvxvw (Сообщение 890736)
Вообще, в конструкторе лучше либо ничего не писать, либо самый минимум. Конструктор - это самая медленная функция в классе изза того, что каждый раз она по-новому прочитывается (остальные функции раз скомпилировали JIT'oм и используем готовые). Да и ограничения на порядок вызова тоже не самое лучшее - вобщем, если в конструкторе нужна какая-то логика, легче ее всю завернуть в отдельную функцию и вызвать из конструктора чем потом сталкиваться с подобного рода проблемами.


Вообще, поделитесь, люди умные инфой где ТАКОЕ можно найти, или на какие грабли лучше не наступать. И вообще за я почему-то считаю, что программист обязан разбираться не только в том что происходит, но и в том как... Хотя бы простейшем уровне. Вот только спрятали всё это, не найду, поделитесь пожалуйста хотя бы ссылочками. Благодарю.

Psycho Tiger 07.09.2011 22:18

Цитата:

Байткод разный потому что так - мы работаем с конкретной функцией, а если явно не указали то в рантайме идёт нисходящий поиск по родителям? По хранимым (а они хранятся, насколько я знаю) именам методов классов?
То писалось мной давно и в шутку. Байткод получается действительно разный, но по быстродействию - писать this.method, super.method или method - одинаково. Если, конечно, все три варианта являются одной и той же переменной ;)

Цитата:

Сообщение от wvxvw
Вообще, в конструкторе лучше либо ничего не писать, либо самый минимум. Конструктор - это самая медленная функция в классе изза того, что каждый раз она по-новому прочитывается (остальные функции раз скомпилировали JIT'oм и используем готовые). Да и ограничения на порядок вызова тоже не самое лучшее - вобщем, если в конструкторе нужна какая-то логика, легче ее всю завернуть в отдельную функцию и вызвать из конструктора чем потом сталкиваться с подобного рода проблемами.

По этому поводу я даже тему открывал, можете поискать.


Часовой пояс GMT +4, время: 04:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.