Что такое кэширование сервиса изображений?
Кэширование сервиса изображений улучшает производительность в клиентских приложениях. При кэшировании сервиса изображений сервер предварительно создает листы на разных уровнях масштаба, которые извлекаются быстрее, чем в случае обработки входных данных из набора данных мозаики или набора растровых данных при каждом запросе от ArcGIS Server . Важным аспектом кэша сервиса изображений является то, что поставляемые изображения не обрабатываются на лету. Изображения обрабатывают заранее, чтобы создать листы кэша, которые затем и поставляются.
В результате кэширования сервиса изображений получается сервис изображений двойного назначения, который используется в зависимости от цели. Одна из них – предоставить быстрый доступ к изображению как к сервису листов. Другая цель – предоставить доступ к данным для отправки запросов, загрузки элементов, доступа к отдельным элементам и использованию данных при обработке и анализе.
Примечание:
Весь кэш изображения хранится в виде 8-битовых данных.
Для чего нужно кэшировать сервисы изображений?
Основное преимущество кэширования сервиса – улучшение производительности. Кэшированный сервис изображений строит изображение очень быстро, поскольку ArcGIS Server не приходится создавать изображение динамически. К преимуществам кэшированного сервиса изображений относятся:
- Повышенная производительность работы с базовыми изображениями – если сервис изображений используется в качестве базового изображения (другими словами, как фоновое изображение карты), и пользователи не меняют свойства сервиса изображений, например методы мозаики, и не выполняют запросы, то рекомендуется применять кэширование.
- Пропуск шага создания обзорного изображения – если вы публикуете набор данных мозаики, который будет использоваться как базовое изображение, кэширование может сэкономить вам время, позволяя пропустить шаг создания обзорных изображений для набора данных мозаики. Это относится, например, к случаям, когда вы поставляете коллекцию предварительно обработанных и разбитых на листы ортофотографий или изображений ЦМР с отмывкой.
- Улучшенная производительность для медленно отображаемых форматов – если вы публикуете изображения в медленно отображаемых форматах или форматах с сильным сжатием, то рекомендуется создавать кэш. Если набор данных мозаики работает медленно из-за сложных функциональных связей, то кэширование обеспечит более быстрый доступ к изображениям.
Как создается кэш?
Кэширование не происходит автоматически. Прежде всего нужно опубликовать набор данных мозаики или набор растровых данных в качестве сервиса изображений. Затем нужно задать свойства кэша. После этого можно начать создавать кэш.
При кэшировании сервиса изображений создается коллекция листов на нескольких предварительно заданных уровнях масштаба или с определенными размерами пиксела, аналогично тому, как это делается при кэшировании картографического сервиса. Это позволяет пользователям быстро увеличивать и уменьшать изображение, но только на соответствующих масштабах. Кроме того, кэш сервиса изображений создается с использованием стандартной комбинации канала RGB и метода мозаики.
Схема листов
Выбираемые масштабы и значения параметров кэша определяют схему листов. Схема листов должна совпадать со схемами листов других слоев, которые вы используете. Например, вы можете выбрать хорошо известные схемы листов ArcGIS Online, Bing Maps и Google Maps, чтобы накладывать листы кэша на листы этих картографических онлайн-сервисов. Или создать собственную схему листов специально для вашего веб-приложения. В каждом кэше есть файл схемы листов, который можно импортировать при создании новых кэшей, чтобы все кэши использовали одни и те же размеры листов и масштабы.
Если схема листов не совпадает со схемой листов других слоев в приложении, то вы можете не увидеть кэшированные слои. Это происходит потому, что веб-клиенты часто не могут переработать данные для их отображения на другом уровне (в отличие от ArcGIS Pro ).
При создании собственной уникальной схемы листов вы можете выбрать масштабы или размеры пиксела, соответствующие обзорным изображениям набора данных мозаики или пирамидных слоев в наборе растровых данных. Если кэш можно создать на основе обзорного или пирамидного слоя, близкого или совпадающего по интервалу с создаваемым кэшем, качество кэша улучшается; в противном случае есть риск, что лист кэша будет создан из других листов кэша, что может ухудшить качество изображения. Просмотрите исходные данные в ArcGIS Pro на тех же масштабах, что и в схеме листов, чтобы убедиться в их качественном отображении.
Вы также можете задать размер базовой ячейки кэша, указав значение параметра Максимальный размер ячейки источника на странице Дополнительные настройки для кэширования. Вы можете использовать этот параметр, например, для начала построения кэша там, где закончились обзорные или пирамидные слои.
Листы кэша
Листы кэша обрабатываются и хранятся в формате JPEG или PNG, что позволяет серверу распространять эти изображения по запросу.
The cache is stored in your server cache directory. When you installed ArcGIS for Server , a server cache directory was created for you in a local folder. If you add more GIS servers to your site, you need to share your server cache directory (using operating system options such as Windows file sharing) so it can be accessed by other machines in your site.
Чтобы кэш работал оптимально, требуются следующие условия. Для создания листов кэша требуется мощный сервер и некоторое время, а для их хранения нужно оборудование. Вам также может потребоваться выполнять обновление кэша, если, например, исходные данные, такие как набор данных мозаики, редактируется. Если приложение предоставляет изображения для большой области с крупным масштабом, вы можете решить, что время и место, необходимые для создания и обслуживания кэша, перевешивают преимущества, связанные с производительностью.
Кэширование по запросу
В случае кэширования по запросу вы задаете схему листов и публикуете сервис изображений, но кэш создается только при обращении пользователя обращается к сервису. Первый пользователь, который переходит по карте в область, отсутствующую в кэш, будет вынужден ждать полной прорисовки листов сервером и добавления их в кэш. Затем листы добавляются в папку кэш на сервере и остаются там, пока их не обновит или не удалит администратор сервера. Это означает, что последующие пользователи карты в этой области не должны будут дожидаться создания листа.
При грамотном использовании кэширование по запросу может сэкономить время и место на диске. Многие сервисы изображений содержат пустые или не представляющие интереса области, особенно в крупных масштабах (при увеличении). Кэширование по запросу позволяет исключить ненужные листы, которые не будут прорисовываться и сохраняться, но у пользователя будет возможность просмотреть эти области при первой необходимости.
Существует много рекомендаций по созданию кэша по запросу для картографических сервисов, которые равным образом применимы к сервисам изображений.
Внимание:
Для сервисов изображений, созданных с использованием набора данных мозаики: при создании кэша по запросу или построении одного уровня кэша, вы должны быть уверены в том, что кэш можно создать. Иначе кэш будет пустым. При создании кэша по запросу убедитесь, что изображения видны на каждом уровне. В противном случае постройте обзоры набора данных мозаики или измените другие параметры, которые могут повлиять на видимость изображения. При использовании инструмента Управление листами кэша картографического сервера не создавайте случайные масштабы. Формируйте все масштабы или только мелкий масштаб, если предыдущий крупный масштаб уже был построен.
Следует ли кэшировать сервисы изображений?
Кэш сервиса изображений представляет снимок сервиса в определенный момент времени с одним или тремя каналами с использованием определенного метода мозаика. Из-за этого кэш лучше работает с сервисами изображений, которые редко изменяют данные, например коллекцией листов цифровых ортофото или сервисом изображений с отмывкой рельефа.
Если данные изменяются (например, при частых обновлениях), вы можете использовать инструменты кэширования, периодически обновляя кэш с помощью соответствующих инструментов. Также настраивается и график автоматического запуска таких обновлений.
Если исходные данные сервиса изображений должны быть динамическими, и временная задержка недопустима, используйте кэширование по запросу.
Если обновление не поспевает за изменениями или сервис изображений должен часто изменяться с разными свойствами изображений, то сервис изображений не подходит для кэширования.
Более подробно:
При использовании ArcGIS Pro растяжка обычно применяется ко всем растровым данным при их добавлении в отображение, поэтому вы можете заметить, что сервис изображений выглядит в веб-приложении не так, как в ArcGIS Pro . Чтобы он выглядел одинаково, можно экспортировать растяжку, применяемую в ArcGIS Pro , и добавить ее в сервис изображений перед публикацией и кэшированием.
Дополнительные сведения об экспорте растяжек в ArcGIS Pro , см. в разделе Сохранение настроек символов в качестве шаблона.
Дополнительную информацию о применении шаблона функции растра (*.rft.xml) к сервису изображений см. в разделе Параметры управления обработкой «на лету».
Как обновлять кэш сервиса изображений?
Управление кэшем сервиса изображений аналогично управлению кэшем картографического сервиса.
Если для сервисов изображений, созданных на основе наборов данных мозаики, изменяются элементы набора данных мозаики, запустите инструмент Вычислить измененную область для создания класса объектов, определяющего измененные области. Этот класс объектов можно использовать для повторного формирования затронутых листов кэша.
Доступ к кэшированному и некэшированному сервисам изображений
При отображении кэшированного сервиса изображений его функциональность будет ограничена. Например, вы не сможете изменить метод мозаики или метод сжатия передачи. Но вы все равно сможете изменить настройки условных знаков, идентифицировать пикселы, производить запросы к данным и загружать исходные данные.
Если вам нужно работать с сервисом изображений динамически и использовать функции, такие как метод мозаики, вы можете изменить режим работы слоя. Чтобы изменить режим, щелкните правой кнопкой слой сервиса изображений и снимите отметку Включить режим просмотра кэша (Enable Cache View Mode) . Чтобы использовать сервис изображений как кэшированный сервис, активируйте эту опцию.
Для доступа к кэшированному сервису изображений в веб-приложении (например, приложении, разработанном с использованием ArcGIS Maps SDK for JavaScript ) используйте класс ArcGISTiledMapServiceLayer , а для доступа к динамическому сервису изображений используйте класс ArcGISImageServiceLayer . Вы также можете получить доступ к кэшированному сервису изображений, используя протокол Open Geospatial Consortium, Inc. (OGC), Web Map Tile Service (WMTS).
Конечная точка REST сервиса изображений поддерживает как ExportImage для предоставления доступа к динамическому сервису изображений, так и GetTile для предоставления доступа к кэшированному сервису изображений.
В этом разделе
- Для чего нужно кэшировать сервисы изображений?
- Как создается кэш?
- Следует ли кэшировать сервисы изображений?
- Как обновлять кэш сервиса изображений?
- Доступ к кэшированному и некэшированному сервисам изображений
Перевод «Only cash» на русский
They often accept only cash and direct people to get prescriptions filled at specific pharmacies sometimes owned by the same operators.
Они часто принимают только денежные средства и направлять людей, чтобы получить лекарства по рецепту в аптеках конкретных иногда принадлежащих же операторов.
Only cash and developed knowledge, skills and abilities.
Только наличными и развиваемыми знаниями, навыками и умениями.
Payment: Only cash on arrival at the guesthouse.
Оплата: Только наличными по прибытию в гостиницу.
Shops are taking only cash, and radio is the main source of information.
Магазины принимают только наличные деньги, а радио стало главным источником информации.
Thus, even those who recognize only cash as a payment instrument have a good opportunity to become addicted to plastic cards.
Тем самым, даже те, кто признают только наличные деньги, как платежный инструмент, имеют хорошую возможность пристраститься к пластиковым картам.
Square can be used in many of these situations where only cash or check have been viable options previously.
Квадрат может быть использован во многих из этих ситуаций, где только наличные деньги или чек были жизнеспособными вариантами ранее.
Please note: we do not accept payment with credit card, only cash.
Пожалуйста, обратите внимание: мы не принимаем оплату кредитными картами, только наличными.
Many taverns and the like in the big cities accept only cash.
Многие таверны и тому подобные, в больших городах принимают только наличные деньги.
Most of the stalls accept only cash and coins.
Большинство киосков принимают только наличные деньги и монеты.
The trip lasts about 30min and costs €10 (only cash).
Поездка длится около 30 минут и стоит 10 евро (только наличными).
On the market only cash payments are accepted.
На рынке так же принимают только наличные деньги.
Radio was the main source of information, and shops were accepting only cash.
Магазины принимают только наличные деньги, а радио стало главным источником информации.
In other cities of Paraguay, only cash is accepted.
В других городах Парагвая, как правило, принимают только наличные деньги.
For example, in Switzerland, residents prefer to use only cash.
К примеру, в Швейцарии жители предпочитают использовать только наличные деньги.
Only cash may be the subject of a promissory note.
Только деньги могут являться предметом вексельного обязательства.
Возможно неприемлемое содержание
Примеры предназначены только для помощи в переводе искомых слов и выражений в различных контекстах. Мы не выбираем и не утверждаем примеры, и они могут содержать неприемлемые слова или идеи. Пожалуйста, сообщайте нам о примерах, которые, на Ваш взгляд, необходимо исправить или удалить. Грубые или разговорные переводы обычно отмечены красным или оранжевым цветом.
Зарегистрируйтесь, чтобы увидеть больше примеров. Это просто и бесплатно
Ничего не найдено для этого значения.
Предложить пример
Больше примеров Предложить пример
Предложения, которые содержат Only cash
Новое: Reverso для Windows
Переводите текст из любого приложения одним щелчком мыши .
Скачать бесплатно
Перевод голосом, функции оффлайн, синонимы, спряжение, обучающие игры
Результатов: 188 . Точных совпадений: 188 . Затраченное время: 147 мс
Помогаем миллионам людей и компаний общаться более эффективно на всех языках.
Кэш на телефоне: на что влияет и почему его нужно очищать
Чувствуете, что приложения работают медленнее или закрываются без видимой на то причины? Не спешите обращаться к специалистам или покупать новое устройство. Ведь, возможно, всё, что вам потребуется сделать, – это очистить кэш. Однако как очистить кэш на телефоне?
Что такое кэш
Кэшированные данные – это временные файлы, которые сохраняет ваше устройство, чтобы сэкономить время загрузки различных служб и программ в будущем.
В кэш включаются текстовые файлы, изображения, видео и другие мультимедиа.
Виды мобильного кэша
- Cистемный кэш. У системных служб и программ есть свои временные файлы, которые по умолчанию хранятся в папке кэша. Однако не рекомендуется очищать его, так как это может негативно повлиять на работу смартфона.
- Пользовательский кэш (кэш приложений). В нем скапливается большое количество данных с разных приложений вашего устройства. Так как это происходит в фоновом режиме, вы можете даже не заметить, как он значительно снизит объём свободного места в памяти.
- Браузерный кэш. В нем хранятся текстовые и графические данные, которые сохраняет ваш браузер для оптимизации его работы и увеличения скорости загрузки страниц.
- Dalvik-cache. Этот вид кэша актуален только для устройств на Android. Он имеет схожесть с пользовательским, однако отвечает только за определённые программы и автоматически очищается системой.
Зачем нужно очищать кэш в телефоне?
Хотя кэшированные файлы помогают изображениям и другим элементам приложений загружаться быстрее, порой они могут сыграть с вашим устройством злую шутку.
Возникновение самых разных ошибок, снижение производительности смартфона, некорректная работа приложений, – все это может быть вызвано избытком или повреждением временных данных.
Кроме того, еще одна распространённая ситуация, которую может вызвать кэш, – это нехватка памяти. В кэше могут храниться гигабайты ненужных файлов, просто занимающих место в хранилище, что является существенной проблемой для владельцев телефонов с небольшим объемом памяти. Поэтому специалисты рекомендуют время от времени очищать кэш.
Однако не нужно слишком часто удалять временные файлы, так как это может сказаться на работе вашего устройства. Достаточно будет раз в пару месяцев очищать данные приложений, которые на ваш взгляд тормозят или работают со сбоями (например, долго загружаются или без предупреждения закрываются).
Браузерный кэш же желательно чистить раз в 2-4 недели, как минимум, в целях защиты конфиденциальности.
Как очистить кэш на смартфоне?
В настоящее время самыми популярными системами для смартфонов являются Android и iOS. Рассмотрим, где в телефоне можно очистить кэш на примере каждой из них.
Как очистить кэш на Андроиде
Так как на смартфонах существуют разные типы кэша, способы его очистки также разнятся. Как правило, удаление временных данных касается двух видов: кэша приложений и браузерного кэша.
Способ 1. Очистить кэш приложений телефона вручную
Бывают случаи, когда приложение внезапно закрывается или вообще перестает отвечать на запросы. Причиной могут быть проблемы с его кэшированными данными.
- Откройте меню Настройки на вашем устройстве.
- Перейдите в Приложения и в открывшемся меню вновь выберите Приложения в верхней части экрана.
- Перед вами появится список приложений, установленных на телефоне. Вы можете как по очереди, так и выборочно очистить их кэш. Выберите приложение, которое хотите очистить. Например, Telegram. Затем откройте раздел Память.
- Самым последним шагом будет кнопка Очистить кэш. Нажмите ее и дождитесь, когда напротив слова «кэш» значение изменится на «0 Б».
Важно: очистка кэша приложения не приведет к удалению всех данных, а лишь очистит временные файлы.
Способ 2. Очистить кэш приложений (пользовательский кэш) с помощью программ
В Google Play доступно для скачивания несколько приложений для очистки кэша. Одним из самых надёжных и проверенных является оригинальное приложение от Google – Files.
- Установите бесплатное приложение Files из магазина и войдите в него.
- Внизу найдите опцию Очистка, если она не открылась автоматически после входа.
- Вам сразу предложат удалить Ненужные файлы, в которые входят временные файлы приложений. Нажмите Освободить.
- Подтвердите свое решение кнопкой Очистка.
Способ 3. Как очистить кэш браузера на телефоне
Браузер Android
- Откройте браузер и найдите четыре точки в правом верхнем углу.
- Перейдите в Настройки.
- В открывшемся меню выберите Удалить данные просмотра.
- Перед вами появится список того, что можно очистить, в том числе Кэшированные страницы. Отметьте их. Внизу экрана нажмите Удалить данные.
- Подтвердите свой выбор.
Как очистить кэш на iPhone
Способ 1. Очистить пользовательский кэш вручную
- Перейдите в Настройки.
- В меню настроек выберите Основные.
- Нажмите Хранилище iPhone, где выберите нужное приложение.
- У вас будет два варианта: сгрузить приложение или полностью удалить его.
Чтобы избавиться от кэша приложений, необходимо «сгрузить» их. Если вы захотите повторно загрузить приложение, все ваши данные будут восстановлены без утомительного восстановления с нуля.
Однако если вы хотите продолжать пользоваться этим приложением, удалите его, а затем заново установите. Но будьте осторожны: это полностью удалит все данные этого приложения, не только временные файлы.
Более щадящий способ очистки кэшированных файлов существует, но работает не для всех приложений, а только для тех, что вы устанавливаете из App Store. Более того, у них должна быть добавлена функция очистки кэша разработчиком.
- Откройте Настройки.
- Прокрутите вниз и выберите программу. Например, VK.
- Выберите Сбросить кэшированные данные.
Способ 2. Очистить пользовательский кэш с помощью приложений
Для очистки кэша приложений можно воспользоваться различными сторонними программами из App Store. Например, Clean Master, Очистка памяти и кэша или Cleaner.
- Скачайте и установите приложение Cleaner. Бесплатной версии будет достаточно.
- Выберите Start Cleaning.
- Просмотрите, какие файлы хочет удалить программа.
- Выберите те, от которых действительно хотите избавиться и подтвердите свой выбор кнопкой Delete.
Способ 3. Очистить кэш браузера
Как очистить кэш браузера на айфоне? Есть очень простой способ. Предустановленный браузер Apple – это Safari, поэтому инструкция будет касаться именно его.
- Откройте приложение Настройки.
- Пролистайте вниз и нажмите Safari.
- Снова пролистайте вниз и выберите Очистить историю и данные.
- Подтвердите выбор.
Заключение
Очистка кэша браузера действительно может решить многие проблемы, происходящие в работе вашего смартфона. Хотя основная цель кэша – это повысить производительность и скорость работы устройства, иногда он может оказывать негативное влияние на него.
В этой статье мы обсудили, как очистить разные типы кэша при помощи нескольких способов. Очищая кэш хотя бы изредка, вы можете повысить скорость работы многих приложений и избежать некоторые виды возникающих ошибок.
Задача о кэше
Пусть задана последовательность из [math]n[/math] запросов к внешней памяти. Необходимо решить для каждого запроса: сохранить его значение в кэш размера [math]k[/math] или оставить его во внешней памяти.
Основные определения
Определение: |
Кэш попадание (англ. cache hit) — результат обрабатываемого запроса уже хранится в кэше и его можно вернуть мгновенно. |
Определение: |
Кэш промах (англ. cache miss) — результат обрабатываемого запроса отсутствует в кэше и чтобы его получить необходимо обращаться к внешней памяти. При получении ответа мы можем сохранить новое значение в кэш, вытеснив(удалив) некоторое старое. |
Определение: |
Временем работы алгоритма кэширования будем называть количество кэш промахов случившихся при обработке всех запросов. |
При анализе случайных алгоритмов под временем работы будем подразумевать матожидание количества кэш промахов при всех возможных случайных выборах, но для фиксированной последовательности запросов.
Определение: |
Онлайн алгоритм (англ. on-line algorithm) — алгоритм, который при обработке запроса не знает следующих запросов. |
Определение: |
Оффлайн алгоритм (англ. off-line algorithm) — алгоритм, которому на вход даются все запросы сразу. |
Определение: |
[math]\alpha[/math] -оптимальность — свойство онлайн алгоритма, означающее что время работы этого алгоритма на любых входных данных не более чем в [math]\alpha[/math] раз больше, чем у оптимального оффлайнового алгоритма, с точностью до аддитивной константы. |
Проблема детерминированных алгоритмов
Любой [math]\alpha[/math] -оптимальный онлайн детерминированный алгоритм кэширования имеет [math]\alpha \geqslant k[/math] .
Обозначим [math]T_\text(\sigma)[/math] и [math]T_\text(\sigma)[/math] как время работы оптимального и детерминированного алгоритма на входе [math]\sigma[/math] . По определению [math]\alpha[/math] -оптимальности имеем [math]\forall\sigma \; T_\text(\sigma) \lt \alpha \cdot T_\text(\sigma) + C[/math] . Покажем, что достаточно построить для любого [math]n[/math] такую последовательность запросов [math]\sigma_n[/math] , что [math]T_\text(\sigma_n) \geqslant k \cdot T_\text(\sigma_n) + C_0[/math] . Так как [math]\lim\limits_
Теперь построим [math]\sigma_n[/math] . В последовательности будем использовать только [math]k + 1[/math] различных запросов. Первыми [math]k[/math] запросами возьмём любые различные, а дальше, каждым следующим запросом поставим тот, результата которого нет в данный момент в кэше детерминированного алгоритма. Это хоть и не явное, но корректное задание последовательности, потому что имея алгоритм, мы можем вычислить каждый запрос в [math]\sigma_n[/math] на основе предыдущих. Очевидно, что [math]T_\text(\sigma_n) = n[/math] .
Посмотрим как на входе [math]\sigma_n[/math] будет работать следующий, возможно оптимальный оффлайн алгоритм (индекс mopt). Первые k элементов алгоритм добавит в кэш, так как они все различные. Когда случается промах, алгоритм среди значений в кэше и только что обработанного запроса вытесняет то, которое в последующих запросах встречается первый раз как можно позже или не встречается совсем. При таком выборе, следующий кэш промах случится не менее чем через [math]k[/math] запросов. Предположим, что это не так, и кэш промах случился через [math]m \lt k[/math] запросов. Так как количество различных запросов на 1 больше размера кэша, то этот промах произошёл на запросе, который мы вытеснили из кэша в предыдущий раз. Из [math]m \lt k[/math] следует, что есть запросы, которые мы не встретили среди первых [math]m[/math] , а значит их первое вхождение будет после того значения, которое мы вытеснили. Получили противоречие, а значит предположение не верно. Оценим время работы возможно оптимального оффлайн алгоритма [math]T_\text \leqslant k + \lceil\frac\rceil \leqslant \frac[/math] . Последнее неравенство выполнено, т.к. [math]n \gg k[/math] . Очевидно [math]T_\text(\sigma_n) \leqslant T_\text(\sigma_n)[/math] , откуда [math]T_\text(\sigma_n) \leqslant \frac[/math]
[math]T_\text(\sigma_n) = n = k \cdot \frac \geqslant k \cdot T_\text(\sigma_n) \Rightarrow T_\text(\sigma_n) \geqslant k \cdot T_\text(\sigma_n) + 0[/math]
Вероятностный алгоритм (англ. random marking algorithm)
В данном алгоритме, у каждого элемента, хранящегося в кэше, может быть метка. Изначально меток ни на одном элементе нет.
Когда в кэш поступает запрос:
- Если кэш попадание, то просто помечаем значение.
- Если кэш промах
- Если все элементы уже помечены, снимаем пометки со всех значений.
- Берём случайное не помеченное значение и вытесняeм его, а новое значение помечаем.
Оценка времени работы алгоритма
Будем рассматривать только те запросы, которые ставят метку в кэше. Из алгоритма понятно, что если запрос не ставит метку, то кэш работает с уже помеченным значением, а значит это кэш попадание. Разобьём эти запросы на фазы так, чтобы границей между фазами был запрос, который сбрасывает все пометки. Так, первый запрос в первой фазе — это первый запрос во всей последовательности, а первый запрос в других фазах — это запрос, выполняющий сброс всех пометок. Пронумеруем фазы от [math]1[/math] до [math]p[/math] . Рассмотрим фазу [math]i[/math] . Разделим все значения на 2 множества: старые — которые были в фазу [math]i-1[/math] и новые — все остальные. Обозначим количество новых значений в фазе [math]i[/math] как [math]m_i[/math] . Тогда количество старых будет [math]k-m_i[/math] .
Посчитаем матожидание количества промахов на фазе [math]i[/math] . Оно максимально, когда в фазе сначала идут новые значения, а потом старые, потому что тогда каждое новое значение имеет больший шанс вытеснить старое, и при обращении к нему случится кэш промах. Так как на начало фазы [math]i[/math] в кэше хранятся только значения фазы [math]i-1[/math] , то понятно, что все новые запросы фазы [math]i[/math] приведут к кэш промаху. Рассмотрим [math]j[/math] -й среди старых запросов. Посмотрим на те значения фазы [math]i-1[/math] , которые к текущему моменту были вытеснены или помечены. Заметим, что если значение было помечено, то его уже невозможно вытеснить, а если было вытеснено, то чтобы его пометить, необходимо вытеснить другое значение. [math]j-1[/math] старых значений пометили сами себя, потому что они были в предыдущей фазе, а [math]m_i[/math] пометить себя не могли, а поэтому вытеснили случайное подмножество из остальных [math]k — (j-1)[/math] . Возможно они вытеснили кого-то из первых [math]j-1[/math] старых значений, которые при обработке вытеснили кого-то другого. Главное, что распределение это не меняет. Вероятность того, что [math]j[/math] -й старый запрос приведёт к кэш промаху, равена тому, что он был вытеснен из кэша [math]P_j = \frac[/math] .
В итоге, матожидание времени работы алгоритма не превосходит суммы матожиданий кэш промахов на каждой фазе, которое мы ограничили сверху суммой [math]m_i[/math] и матожиданием промахов на старых значениях.
[math] \begin T_\text &\leqslant \sum\limits_^p\left(m_i + \sum\limits_E(\text\; j)\right) = \\ &= \sum\limits_^p\left(m_i + \sum\limits_^\frac\right) = \sum\limits_^p m_i\left(1 + \sum\limits_^\frac\right) = \\ &= \sum\limits_^p m_i\left(1 + \sum\limits_^\frac\right) = \sum\limits_^p m_i(1 + H_k — H_) \leqslant \sum\limits_^p m_iH_k = H_k\sum\limits_^p m_i \end [/math]
Теперь оценим снизу время работы оптимального алгоритма. Рассмотрим фазы [math]i[/math] и [math]i-1[/math] . Среди запросов этих фаз всего [math]k + m_i[/math] различных значений, а потому оптимальный алгоритм обязан промахнуться хотябы [math]m_i[/math] раз.
Из полученных оценок не сложно вывести:
[math]T_\text \leqslant 2H_k \cdot T_\text[/math]
Алгоритм является [math]2H_k[/math] -оптимальным, или, что более практично, [math]\mathcal(\ln(k))[/math] -оптимальным.
Источники
- A. Fiat, R. M. Karp, M. Luby, L. A. McGeoch, D. D. Sleator, N. E. Young, Competitive Paging Algorithms, Journal of Algorithms 12, 685-699 (1991)
- Lecture notes for Brown CS251 — Randomized paging algorithms