Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Скорее всего, пока Perl6 формируется, Python3000 стабилизируется, а Python-сообщество предложит ряд очень привлекательных решений для веб-разработчиков, что заметно потеснит Perl на этом поле. У Python есть на то все шансы.

Приложение

Замечания о производительности

Хотя разработчики Perl делают очень много для повышения производительности, но приходится признать, что во многих аспектах Python обходит Perl.

В Python есть множество механизмов, дающих преимущество, начиная с предварительной компиляции модулей в байт-код и заканчивая последовательным проведением идеи copy-on-write. Когда вы пишете на Python a=b, значение не копируется, даже если это скаляр.

Приведу один выразительный пример. Большинство веб-приложений интенсивно работают со строками. Python поддерживает регулярные выражения в той же мере, что Perl. Но по результатам тестов Фридла (Дж. Фридл «Регулярные выражения»; имеется русский перевод первого и второго издания книги) обнаруживает десятикратное(!) превосходство в производительности. Это происходит потому, что Python не использует переменных типа $1 и начисто лишён $&-чумы.

На заметку Perl-программисту: если хотя бы один модуль вашей программы использует переменные типа $&, то все регулярные выражения во всех модулях значительно замедляются.

Например, элементарное выражение m/a/ начинает работать в десятки раз медленнее (точная цифра зависит от длины строки). Надо заметить, что переменная $& используется во многих модулях самого общего назначения и даже в прагме diagnostics.

О циклических ссылках и сборке мусора

Циклическая ссылка возникает, когда объект ссылается сам на себя или входит в цепь взаимноссылающихся объектов. (Простейший пример на Perl «$x=$x».) В этом случае, даже если переменная, содержащая ссылку на объект, уничтожена, и объект стал недоступен, счётчик ссылок остаётся не равным нулю и сборщик мусора не может освободить память, что приводит к утечкам.

В Perl любая конструкция, ссылающаяся на себя, будь то замыкание и сложная структура данных, вызывает подобные утечки и программист обязан сам разрывать циклы ссылок в деструкторах. Любая неосторожность влечёт неприятности.

В Python (начиная с версии 2.0) имеется асинхронный сборщик мусора, распознающий циклические ссылки и корректно уничтожающий недоступные переменные. Поэтому создать утечку памяти в Python очень не просто. Кроме того, в Python имеются штатные средства взаимодействия со сборщиком мусора (модуль gc), которые позволяют легко обнаруживать и уничтожать циклические ссылки.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100