Método para Otimizar Django baseado na Estratégia Greedy

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Rocket clouds
Método para Otimizar Django baseado na Estratégia Greedy por Mind Map: Método para Otimizar Django baseado na Estratégia Greedy

1. Introdução

1.1. Aplicações web devem ser feitas em ambientes ágeis.

1.2. Existências de vários componentes, frameworks e ferramentas

1.2.1. Gera dúvidas e questionamento por parte dos desenvolvedores em qual usar

1.3. Django em Python é uma framework ágil para web

1.3.1. Ajuda a simplificar a progressão de aplicações web

1.3.2. Provê completa solução para desenvolvedores, mas Python afeta a eficiência

1.3.2.1. Em Python tudo é objeto, obrigando a VM do Python a alocar muita memória e operações de checagem de tipo

2. Descrição do Problema

2.1. Python VM aloca muito espaço de memória e não o libera

2.1.1. Causa de pouca eficiência em uso de memória, principalmente em aplicações web

2.2. Exemplo de motivação

2.2.1. Durante a execução de programas python na Python VM, muitos números inteiros serão alocados

2.2.1.1. Por exemplo, >>> for i in range(344,43332): >>> print i

2.2.1.1.1. A Python VM primeiro alocará 42989 inteiros e depois os imprimirá

2.2.2. O que nos frustra é que a Python VM nunca libera esse espaço de memória

2.3. Sistema de gerenciamento de memória do Python

2.3.1. Em python, tudo é objeto

2.3.1.1. Tipo de dados básico, tipos de dados avançados, funções, módulos, pilhas são todos objetos

2.3.1.2. Alguns objetos são muito pequenos, por ex. objetos inteiros, alguns são um pouco grandes, por ex. objetos de função

2.3.2. Python VM

2.3.2.1. Totalmente depende do módulo de coleta de lixo

2.3.2.1.1. Se o número de objetos referenciados circulares não atingir o limite, a Python VM nunca liberará o bloco

2.3.2.2. Baixa eficiência

2.3.2.2.1. O módulo de coleta de lixo varrerá todos os objetos inteiros

2.3.2.3. Dificuldade de defragmentação

2.3.2.3.1. Mesmo se você acionar o módulo de coleta de lixo, apenas uma memória limitada pode ser liberada porque os objetos inteiros estão espalhados em todos os blocos

3. Métodos

3.1. Um algoritmo greedy para gerenciamento de objetos não contêineres

3.1.1. Alocar um objeto;

3.1.1.1. Aloca um bloco para um objeto e é movido para L_Fully

3.1.2. Liberar um objeto;

3.1.2.1. Se o bloco do objeto está em L_Fully, será movido para o topo de L_Partly

3.1.2.2. Se o bloco do objeto está em L_Partly, e se já foi usado, será movido para L_Empty

3.1.2.3. Coletar os blocos em L_Empty

3.2. Características do modelo baseado em greedy

3.2.1. Torne os objetos não contêineres independentes do módulo de coleta de lixo;

3.2.2. Como o número de objetos inteiros úteis remanescentes dos blocos em L_Parte mantêm-se não ascendentes, os blocos usados ​​com mais freqüência serão usados ​​com prioridade. Os blocos de cauda do L_Partly serão coletados gradualmente.

4. Experimento

4.1. Assunto

4.1.1. Django

4.1.1.1. Dois programadores habilidosos implementam as mesmas funções com o Django e o Ruby On Rails

4.1.1.1.1. O estudo mostrou que o Django usa menos linhas de código, levando menos tempo

4.1.1.1.2. Django também tem um sistema de templates mais conciso, e a capacidade de gerar automaticamente páginas admin

4.2. Revisão

4.2.1. Comparação entre duas maneiras diferentes de renderização de página

4.2.1.1. HttpResponse()

4.2.1.1.1. Usado para renderizar uma página 4M

4.2.1.2. Template.render()

4.2.1.2.1. Usado para renderizar uma tabela 150*150 escrita com o idioma padrão do Django

4.2.2. Para obter a comparação de uso de memória de Python VM ao mesmo tempo, é utilizado um módulo abrangente para obter o uso de memória

4.2.2.1. O instrumento é feito antes e depois da renderização e, em seguida, iterado 100 vezes

4.3. Resultados

4.3.1. O uso de memória física pode ser obtido lendo o arquivo smaps que é um novo caractere do kernel da versão 2.6

4.3.2. Quando benchmark é executado, um dado preciso de uso de memória será registrado

4.3.3. O Unladen-Swallow irá mostrar o uso de memória aleatoriamente do começo ao fim

4.3.4. A linha vermelha representa inicial, a azul representa a modificada

4.3.4.1. .

4.3.4.1.1. .

4.4. Análise dos Resultados

4.4.1. O algoritmo greedy funciona

4.4.2. A eficiência do tempo da Python VM não é influenciada

4.4.3. Melhora o Django em 10% no uso de memória

5. Conclusão

5.1. É proposta uma estratégia de gerenciamento de memória e refinados três defeitos do gerenciamento de inteiros da Python VM

5.1.1. Então a eficiência do uso de memória da Python VM é melhorada

5.2. O experimento foi feito em Django e Python

5.3. Foi economizado cerca de 10% de memória física

5.4. Este método pode ser compatível com muitas outras formas de otimização

6. Referências

6.1. A Method of Optimizing Django Based On Greedy Strategy - Jian Zhou

7. Artigo

7.1. A Method of Optimizing Django Based On Greedy Strategy

7.2. Jian Zhou