Когда необходимо начать использовать Memcached?

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

# a dataframe from a list of lists 
el = [['RED', 50, 1], 
      ['GREEN', 30, 2], 
      ['BLUE', 7, 3], 
      ['YELLOW', 3, 4], 
      ['ORANGE', 9, 5], 
      ['BLACK', 1, 6]]
df = pd.DataFrame(el)

# since you are not using the entire dataframe
df_thres = df[df[1] > 1]

# make a fixed length color map manually
c = ['red', 'green', 'blue', 'yellow', 'orange']
clist1 = {i:j for i, j in zip(df_thres[0].values, c)}

# make an arbitrary-length colormap
cm = plt.get_cmap('rainbow')
c = [cm(1.0 * i/len(df_thres)) for i in range(len(df_thres))]
clist2 = {i:j for i, j in zip(df_thres[0].values, c)}


fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(11, 8))

# manual colors

# PIE PLOT: sort on the third column
newdf = df_thres.sort_values(2, ascending=False)
ax[0, 0].pie(newdf[2], labels=newdf[0], colors=[clist1[i] for i in newdf[0].values])
ax[0, 0].axis('square') # matplotlib 2.x only

# BAR PLOT: sort on the second column    
newdf = df_thres.sort_values(1, ascending=False)
ax[0, 1].bar(newdf[0], newdf[1], color=[clist1[i] for i in newdf[0].values])

#----------------

# arbitrary-length generated colorlist
newdf = df_thres.sort_values(2, ascending=False)
ax[1, 0].pie(newdf[1], labels=newdf[0], colors=[clist2[i] for i in newdf[0].values])
ax[1, 0].axis('square') # matplotlib 2.x only

newdf = df_thres.sort_values(1, ascending=False)
ax[1, 1].bar(newdf[0], newdf[1], color=[clist2[i] for i in newdf[0].values])

Это вывод, который я получаю. Цвета в нижнем ряду не помечены, но соответствуют друг другу. (Также обратите внимание, что я использую matplotlib для обоих графиков здесь)

enter image description here

7
задан Philip Morton 20 November 2008 в 16:41
поделиться

4 ответа

Необходимо начать использовать memcached если не с помощью него, начинает влиять сайт / сервер.

Таким образом, когда у Вас просто есть 100 посетителей в день, и Ваш сайт все еще отвечает быстро, не потрудитесь использовать его.

Но когда у Вас есть время выполнения где-нибудь около 200 мс или больше на страницу, и сайт чувствует себя медленным также, необходимо высматривать узкие места с помощью некоторого профилировщика PHP (XDebug интегрирует тот, который можно использовать в сочетании с WinCacheGrind или KCacheGrind). Особенно кэширование запросов к базе данных должно сохранить Вас некоторое время загрузки.

9
ответ дан 6 December 2019 в 10:55
поделиться

Правило № 1 когда дело доходит до оптимизации производительности: не оптимизируйте, пока Вы не должны будете!

Если у Вас нет проблем производительности, то Вы не должны оптимизировать. Другие хорошие правила включают:

  • Не оптимизируйте, пока Вы не будете делавшими записями приложение. Вы редко знаете, где реальные проблемы производительности неожиданно возникнут при разработке, и это только сделает код более неаккуратным и более трудным изменить, когда необходимо будет внести изменение в будущем.

  • Используйте профилировщика или некоторый другой способ измерить определенные блоки кода для фактического измерения то, что занимает много времени, и оптимизируйте те разделы. Не просто предположите то, что занимает много времени. На самом деле измерьте его.

5
ответ дан 6 December 2019 в 10:55
поделиться

Если Вы используете MySQL в качестве базы данных, выполненное шоу processlist управляют на консоли MySQL в течение пикового времени. Если существует много запросов со стороны PHP, ожидающей больше чем 500 мс, время, что Вы обратились к memcached.

3
ответ дан 6 December 2019 в 10:55
поделиться

Сначала думайте о what/when/if для кэширования перед размышлением о том, если необходимо использовать Memcached, чтобы сделать кэширование.

То, когда у Вас есть некоторый “объект”, который используется для ответа на большое количество запросов, которое берет много базы данных, читает для создания. И Ваш сайт не может не отставать от своей загрузки из-за воссоздания того “объекта” offen. Вам также нужен хороший четко определенный ключ для объекта, который Вы кэшируете.

“Объект”, который Вы кэшируете, должен быть считан намного чаще затем, строки базы данных, используемые для создания его, изменяются, иначе преимущество кэша, вероятно, будет меньше стоимостью управления кэшем после времени, немного данных изменяется.

Кэширование строк единой базы данных не принесет Вам пользу соответствия.

1
ответ дан 6 December 2019 в 10:55
поделиться
Другие вопросы по тегам:

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