Como as matrizes Python / Numpy escalam com o aumento das dimensões da matriz?
Isso se baseia em algum comportamento que notei ao comparar o código Python para esta pergunta: Como expressar essa expressão complicada usando fatias numpy
O problema envolveu principalmente a indexação para preencher uma matriz. Descobri que as vantagens de usar as versões Cython e Numpy (não muito boas) em um loop Python variavam dependendo do tamanho das matrizes envolvidas. Tanto o Numpy quanto o Cython experimentam uma vantagem crescente de desempenho até certo ponto (algo em torno de para Cython e N = 2000 para Numpy no meu laptop), após o qual suas vantagens diminuíram (a função Cython permaneceu a mais rápida).
Esse hardware está definido? Em termos de trabalho com matrizes grandes, quais são as práticas recomendadas que se deve aderir ao código em que o desempenho é apreciado?
Esta pergunta ( por que o meu Matrix-Vector Multiplication Scaling? ) Pode estar relacionada, mas estou interessado em saber mais sobre como as diferentes maneiras de tratar matrizes em Python escalam em relação uma à outra.
fonte
Respostas:
Há algumas coisas erradas nessa referência, para começar, não estou desativando a coleta de lixo e estou pegando a soma, não o melhor momento, mas tenha paciência comigo.
Deveria se preocupar com o tamanho do cache? Como regra geral, eu digo não. Otimizá-lo em Python significa tornar o código muito mais complicado, para ganhos de desempenho duvidosos. Não esqueça que os objetos Python adicionam várias despesas gerais difíceis de rastrear e prever. Só consigo pensar em dois casos em que esse é um fator relevante:
Nos comentários, Evert mencionou o CArray. Observe que, mesmo trabalhando, o desenvolvimento parou e foi abandonado como um projeto independente. A funcionalidade será incluída no Blaze , um projeto em andamento para criar uma "nova geração Numpy".
fonte