Одним из главных принципов уникальной «системы Физтеха», заложенной в основу образования в МФТИ, является тщательный отбор одаренных и склонных к творческой работе представителей молодежи. Абитуриентами Физтеха становятся самые талантливые и высокообразованные выпускники школ всей России и десятков стран мира.

Студенческая жизнь в МФТИ насыщенна и разнообразна. Студенты активно совмещают учебную деятельность с занятиями спортом, участием в культурно-массовых мероприятиях, а также их организации. Администрация института всячески поддерживает инициативу и заботится о благополучии студентов. Так, ведется непрерывная работа по расширению студенческого городка и улучшению быта студентов.

Адрес e-mail:

Оптимизация вызова методов через класс-интерфейс в реализации языка Java

С.А.Лунев, аспирант МФТИ.

 

Язык программирования Java, получивший широкое распространение в последние годы, обладает рядом достоинств, среди которых обычно выделяются платформенная независимость и простота написания Java-программ. Одним из механизмов, обеспечивающих эти свойства языка, является механизм вызова методов через класс-интерфейс. При этом полностью разделяются интерфейс и реализация класса, что позволяет достичь максимально прозрачной структуры. Интерфейс и реализация оформляются в виде отдельных классов, связанных между собой отношением наследования. При этом интерфейс может иметь несколько реализаций.

К сожалению, вызов методов через класс-интерфейс является очень дорогостоящей операцией, сводящейся к ассоциативному поиску нужного метода среди всех методов объекта. С другой стороны, как показывает практика, в процессе исполнения программы обычно загружается только одна реализация для каждого интерфейса. В основном это обусловлено следующими причинами:

Часто программисты пользуются механизмом интерфейсов только для достижения лучшей структуры проекта. В этом случае интерфейс изначально имеет единственную реализацию. В соответствии с моделью позднего связывания, принятой в Java, класс загружается только тогда, когда к нему реально было произведено обращение. Поэтому даже если в проекте предусмотрены несколько реализаций интерфейса, при реальной работе программы загружается только одна из них. Например, программа может взаимодействовать с пользователем через командную строку или через оконную систему, но конкретная реализация этого взаимодействия определяется при запуске программы, а альтернативная реализация даже не загружается.

Таким образом, каждый метод класса-интерфейса часто имеет ровно одну реализацию при исполнении программы, т.е. фактически теряет свою виртуальность и может быть вызван напрямую. Предлагаемый метод оптимизации заключается в поддержании информации о количестве реализаций методов классов-интерфейсов, загруженных виртуальной машиной Java во время исполнения программы. Методы, имеющие единственную реализацию, могут быть вызваны гораздо более эффективно. Механизм реализации оптимизации зависит от конкретной архитектуры.

Предлагаемый метод оптимизации был опробован для архитектуры picoJava-II. На отдельных тестах пакета JavaSpec, интенсивно использующих вызов методов через класс-интерфейс, было получено ускорение до пяти раз.

Литература  

Патрик Нотон, Java. Справочное руководство: Пер. с англ. – М.: Восточная Книжная Компания, 1996 Tim Lindholm, Frank Yellin, “The Java Virtual Machine Specification”, Addison-Wesley, 1996
Если вы заметили в тексте ошибку, выделите её и нажмите Ctrl+Enter.

© 2001-2016 Московский физико-технический институт
(государственный университет)

Техподдержка сайта

МФТИ в социальных сетях

soc-vk soc-fb soc-tw soc-li soc-li
Яндекс.Метрика