2014-11-11 1 views
3

a python module으로 작성했으며 그 중 많은 부분이 속도를 위해 @numba.jit 데코레이터로 래핑되었습니다. 또한이 모듈에 대해 많은 테스트를 작성했으며 py.test으로 실행합니다 (on Travis-CI). 이제, 을 사용하여이 테스트의 적용 범위를 살펴 보려고합니다.이 플러그인은 coverage에 의존하는 플러그인이며 (이 모든 것을 통합하려는 희망은 coveralls입니다).numba-wrapped 함수의 적용 범위 분석

불행히도, 모든 기능에 numba.jit을 사용하면 coverage은 기능이 사용되지 않는다고 생각하는 것처럼 보입니다. 그래서 기본적으로 내 테스트에 대해 보도 된 바가 없습니다. numba이 코드를 가져 와서 컴파일하고 있기 때문에 이것은 놀랄만한 일이 아니므로 코드 자체는 실제로 사용되지 않습니다. 하지만 당신이 파이썬에서 몇 번 볼 수있는 마법이 있기를 바랬습니다 ...

이 두 가지 훌륭한 도구를 결합하는 유용한 방법이 있습니까? 그런데 numba로 범위를 측정하는 데 사용할 수있는 다른 도구가 있습니까?

는 [I 차이 here을 보여주는 최소한의 작업 예를했습니다.)

답변

3

가장 좋은 것은이 범위 측정시 numba의 JIT를 비활성화 할 수 있습니다. 이는 파이썬 코드와 JIT 코드 사이의 통신을 신뢰하는 데 의존하지만, 어느 정도 신뢰해야합니다.

+1

그래, 나는 그럴 것이라고 걱정했다. 안타깝게도 numba를 사용하는 경우에도 약 15 분이 걸리므로 약 1 일이 소요될 것으로 예상되므로 numba를 비활성화하면 나에게 도움이되지 않습니다. 그리고 나는 그들이 적용 범위를 줄이지 않고 취할 시간을 줄이려면 어떤 방법을 찾을 수 없습니다. 어쨌든, 당신의 대답과 아주 멋진 코드를 보내 주셔서 감사합니다! :) – Mike

0

이 질문에 대한 대답은 아니지만 다른 사람이 작업하는 데 관심이있는 다른 방법을 광고해야한다고 생각했습니다. llvm-cov을 사용하여 수행 할 수있는 아주 아름다운 것이있을 것입니다. 아마도 이것은 numba에서 구현되어야하고, llvm 코드는 계측되어야하며, 어딘가에 플래그가 필요합니다. 그러나 numba는 파이썬 코드와 llvm 코드의 대응 관계를 알고 있기 때문에, 내가 아는 사람보다 더 영리한 사람이 구현할 수있는 무언가가 있어야합니다.