== 토요일 == * 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년)