Pergunta

Eu sempre pensei que as vantagens do Python são readibility código e velocidade de desenvolvimento, mas o tempo e uso de memória não eram tão bons quanto os de C ++.

Estas estatísticas me impressionou muito difícil.

O que a sua experiência de falar sobre Python vs uso do tempo e da memória C ++?

Foi útil?

Solução

Eu acho que você está lendo essas estatísticas incorretamente. Eles mostram que Python é de até cerca de 400 vezes mais lento do que C ++ e com a excepção de um único caso, Python é mais de um devorador de memória. Quando se trata de tamanho fonte, porém, Python vence plana.

As minhas experiências com Python mostram a mesma tendência definida que Python é da ordem de entre 10 e 100 vezes mais lento do que C ++ ao fazer qualquer processamento de números sério. Há muitas razões para isso, as mais importantes sendo: a) Python é interpretado, enquanto C ++ é compilado; b) Python não tem primitivos, tudo, incluindo os tipos internos (int, float, etc.) são objetos; c) uma lista Python pode armazenar objetos do tipo diferente, então cada entrada tem de armazenar dados adicionais sobre seu tipo. Estes todos severamente dificultam tanto tempo de execução e consumo de memória.

Isso não é motivo para ignorar Python embora. Um monte de software não requer muito tempo ou memória, mesmo com o fator de lentidão 100 tempo. custo de desenvolvimento é onde Python ganha com a simples e concisa estilo. Esta melhoria no custo de desenvolvimento, muitas vezes supera o custo de recursos de CPU e de memória adicionais. Quando isso não acontece, no entanto, em seguida, vitórias C ++.

Outras dicas

Tudo o mais lento (> 100x) usos do Python no tiroteio são operações científicas que exigem alta Gflop / s contagem. Você não deve usar python para aqueles de qualquer maneira. A maneira correta de uso python é importar um módulo que faz esses cálculos e, em seguida, ir ter uma tarde relaxante com sua família. que é a maneira Python:)

A minha experiência é o mesmo que os valores de referência. Python pode ser lenta e usa mais memória. Eu escrevo muito, muito menos código, e trabalha pela primeira vez com muito menos de depuração. Desde que gerencia a memória para mim, eu não tenho que fazer qualquer gerenciamento de memória, economizando horas de perseguir vazamentos do núcleo.

O que é a sua pergunta?

size Fonte não é realmente uma coisa sensata a medir. Por exemplo, o seguinte shell script:

cat foobar

é muito mais curto do que qualquer um seu Python ou C ++ equivalentes.

também: psico vs C ++ .

É ainda uma comparação ruim, já que ninguém faria os benchmarks coisas numbercrunchy tendem a focar em puro Python qualquer maneira. Um melhor seria comparar o desempenho de aplicações realistas, ou C ++ contra NumPy, para ter uma idéia se o seu programa será visivelmente mais lento.

O problema aqui é que você tem duas línguas diferentes que resolvem dois problemas diferentes ... é como comparar C ++ com assembler.

Python é para desenvolvimento rápido de aplicações e para quando o desempenho é uma preocupação mínima.

C ++ é não para o desenvolvimento rápido de aplicações e herda um legado de velocidade a partir de C -. Para a programação de baixo nível

Eu acho que essas estatísticas mostram que Python é muito mais lenta e usa mais memória para esses benchmarks - você tem certeza que você está lendo-os na posição correcta ?

Na minha experiência, que é principalmente com a escrita de programas de rede e sistema de arquivos-bound em Python, Python não é significativamente mais lento de qualquer forma que importa. Para esse tipo de trabalho, seus benefícios superam os custos.

É o mesmo problema com gerido e fácil de usar linguagem de programação como sempre - eles são lentos (e às vezes comendo-memory)

.

Estes são idiomas para fazer o controle ao invés de processamento. Se eu teria que escrever aplicação para transformar imagens e tive que usar Python também todo o processamento poderia ser escrito em C ++ e ligado a Python via ligações enquanto interface e controle de processo seria definitivamente Python.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top