Грокаем а Иллюстрированное пособие для программистов и любопытствующих


def check_voter(name): if voted.get(name): print "kick them out! else



Download 3,16 Mb.
bet32/79
Sana19.02.2022
Hajmi3,16 Mb.
#457977
1   ...   28   29   30   31   32   33   34   35   ...   79
Bog'liq
Грокаем алгоритмы ( PDFDrive )

def check_voter(name): if voted.get(name): print "kick them out! else:
voted[name] = True print "let them vote!
Давайте протестируем его на нескольких примерах:
>>> check_voter("tom") let them vote!
>>> check_voter("mike") let them vote!
>>> check_voter("mike") kick them out!
Когда Том приходит на участок в первый раз, программа разрешает ему проголосовать. Потом приходит Майк, который тоже допускается к голосо­ванию. Но потом Майк делает вторую попытку, и на этот раз у него ничего не получается.
Если бы имена проголосовавших хранились в списке, то выполнение функции со временем замедлилось бы, потому что функции пришлось бы проводить простой поиск но всему списку. Но имена хранятся в хеш- таблице, а хеш-таблица мгновенно сообщает, присутствует имя избирателя в списке или нет. Проверка дубликатов в хеш-таблице выполняется очень быстро.
Использование хеш-таблицы как кэша
П

оследний пример: кэширование. Если вы ра­ботаете над созданием веб-сайтов, вероятно, вы уже слышали о пользе кэширования. Общая идея кэширования такова: допустим, вы захо­дите на сайт facebook.com.'.
1. Вы обращаетесь с запросом к серверу Face- book.

  1. Сервер ненадолго задумывается, генерирует веб-страницу и отправляет ее вам.

  2. Вы получаете веб-страницу.

ь

СЕРВЕР
ЬЕБ-СТРШЦА



ы
Например, на Facebook сервер может собирать информацию о действиях всех ваших друзей, чтобы представить ее вам. На то, чтобы собрать всю информацию и передать ее вам, требуется пара секунд. С точки зрения пользователя, пара секунд это очень долго. Он начинает думать: «Почему Facebook работает так медленно?» С другой стороны, серверам Facebook приходится обслуживать миллионы людей, и эти пары секунд для них суммируются. Серверы Facebook трудятся в полную силу, чтобы сгенери­ровать все эти страницы. Нельзя ли как-то ускорить работу Facebook при том, чтобы серверы выполняли меньше работы?
Представьте, что у вас есть племянница, которая пристает к вам с вопро­сами о планетах: «Сколько километров от Земли до Марса?», «А сколько километров до Луны?», «А до Юпитера?» Каждый раз вы вводите запрос в Google и сообщаете ей ответ. На это уходит пара минут. А теперь пред­ставьте, что она всегда спрашивает: «Сколько километров от Земли до Луны?» Довольно быстро вы запоминаете, что Луна находится на рас­стоянии 384 400 километров от Земли. Искать информацию в Google не нужно... вы просто запоминаете и выдаете ответ. Вот так работает меха­низм кэширования: сайт просто запоминает данные, вместо того чтобы пересчитывать их заново.
Если вы вошли на Facebook, то весь контент, который вы видите, адапти­рован специально для вас. Каждый раз, когда вы заходите на facebook.com, серверам приходится думать, какой контент вас интересует. Если же вы не
ввели учетные данные на Facebook, то вы видите страницу входа. Все поль­зователи видят одну и ту же страницу входа. Facebook постоянно получает одинаковые запросы: «Я еще не вошел на сайт, выдайте мне домашнюю страницу». Сервер перестает выполнять лишнюю работу и генерировать домашнюю страницу снова и снова. Вместо этого он запоминает, как вы­глядит домашняя страница, и отправляет ее вам.
ъхол
НЕ
В

/




^ ьхол

Download 3,16 Mb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish