Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

김동환/PyCon2015정리

From ZeroWiki
Revision as of 03:41, 29 August 2015 by imported>wraithkim

토요일

  • 11:00 Python Test 시작하기
  • 테스트 기본 설명
  • unitest 소개
  • mock 소개: 의존성을 가지는 코드 관련 테스트 툴
  • docker 소개: 통합 테스트 관련
  • selenium: 웹 ui관련 테스트 툴
      • 웹 테스트를 할 때 필요한 소스는 미리 만들어 놓거나,
   위의 docker를 이용할 수도 있음

메인 로직은 반드시 검증 < 테스트 시간 < 개발시간의 두 배 가능한 한 자주 테스트를 실행

  • 테스트 규칙
   한번에 하나만 테스트
   실패가 명확해야 함
   빠르게 테스트 되어야 함
   중복 되지 않음
   자동화
   다른 것에 영향받지 않아야 함
   

성능에 관한 테스트는 unitest를 사용해야 하는 것이 아닌 시간 측정을 직접 해서 예외를 띄울 수밖에 없다고 함

  • 12:00 Writing fast

목표

  • 컴퓨터와 파이썬 내부 이해
  • 프로파일링으로 핫스팟 찾기
  • 개선 -> 빠른 코드
  • 빠르면서도 느린 컴퓨터
  • 잘 모르겠지만 프로파일링이 좋음
  • 빠른 코드 짜고 싶다

컴퓨터는 빠른듯 느리다 메모리의 속도:

   일반적인 인터페이스 < 메모리 전송 속도 < cpu와 관계된 버스나 특수한 버스

CPU 클럭: CPU가 무엇을 한번 하는데 걸리는 시간(hz)

프로그램에 끝내는 데 필요한 클럭을 줄이는게 빠른 실행의 조건 dis: 파이썬 디스어셈블러 빠른 코드와 느린 코드는 실행되는 명령어 개수에 차이가 남

프로파일러

  • timeit: 여러번 돌려서 실행 시간 측정, 기본값으로 gc를 끔
  • cProfile: 오버헤드 좀 있음, 대신 정보량이 많음
  • line_profiler
  • profiling: 실시간 프로파일링

빠른 코드를 짜면 CPU에 낭비되는 시간이 줄어든다.(CPU의 5초는 사람의 약 30000년)