U E D R , A S I H C RSS

김동환/PyCon2015정리 (rev. 1.2)

김동환/Py Con2015정리

토요일

  • 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년)
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:48
Processing time 0.0440 sec