Что такое сжатие для в Кэш-памяти PHP?

На PHP.net я смотрю на Кэш-память:: у функции множества и этого есть этот дополнительный флаг, чтобы использовать сжатие...

Используйте MEMCACHE_COMPRESSED, чтобы сохранить сжатый пункт (использует zlib).

$memcache_obj->set('var_key',
                   'some really big variable',
                    MEMCACHE_COMPRESSED,
                    50);

Мне любопытно, каково было бы преимущество этого, просто использовав меньше пространства? Кажется, что это замедлило бы процесс?

16
задан JasonDavis 20 January 2010 в 22:52
поделиться

3 ответа

Сжатие и распаковка на серверах, которые работают PHP, могут быть быстрыми - в зависимости от вашей сети и нагрузки на ваши серверы, это может быть быстрее, чем передавать больше (не сжатых) Memcached серверы через сеть.

Сжимание ваших данных также означает использование меньшего количества памяти на серверах memcached.

Как часто вы должны выбрать между ЦП, сетью и RAM - и вы должны учитывать свои серверы и сеть, их нагрузку и доступные ресурсы, чтобы иметь возможность решить.

Что будет «быстрым» решением в вашей конкретной ситуации? Только вы можете сказать ... и единственный способ узнать, вероятно, тестирование как решений в «реальных условиях».


Также записи memcached не могут быть больше 1 МБ; Я полагаю, в некотором смысле, что сжатие может помочь положить записи немного больше, чем 1 МБ (когда еще не сжимается) в MEMCACHED.

26
ответ дан 30 November 2019 в 17:04
поделиться

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

import time

times = []

def timeit():
    input("Press ENTER to start: ")
    start_time = time.time()
    input("Press ENTER to stop: ")
    end_time = time.time()
    the_time = round(end_time - start_time, 2)
    print(str(the_time))
    times.append(the_time)

def main():
    while True:
        print ("Do you want to...")
        print ("1. Time your solving")
        print ("2. See your solvings")
        dothis = input(":: ")
        if dothis == "1":
            timeit()
        elif dothis == "2":
            sorted_times = sorted(times)
            sorted_times.reverse()
            for curr_time in sorted_times:
                print("%d - %f" % ((sorted_times.index(curr_time)+1), curr_time))
            break
        else:
            print ("WTF? Please enter a valid number...")

main()
-121--1413487-
  1. MEMCACHED можно использовать для сохранения распределенного кэша между машинами. В этом случае обновления кэша должны быть отправлены через сеть или другое соединение между машинами. Сжатие снижает объем данных, которые необходимо отправлять, поэтому сокращение времени, необходимое для передачи и, следовательно, может улучшить производительность системы.
  2. Даже в одном хосте сжимания - это заказы быстрее, чем замена страниц памяти на / из дисков, поэтому, если вы заменяете нехватку памяти, сжатие снизит сумму, которая должна быть поменяться, и тем самым улучшается производительность. В соответствии с правильным углом условия, сжатие может снизить размер данных, чтобы вам не нужно вообще обмениваться - большая победа в производительности.
4
ответ дан 30 November 2019 в 17:04
поделиться

Вы правы, это компромисс между , занимаясь меньшего пространства или , едят больше циклов ЦП .

Вы тоже выбираете, какой ресурс для вас более ценно, RAM или CPU.

4
ответ дан 30 November 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: