분류 전체보기
고성능 파이썬(2)
프로파일링으로 병목지점찾기 시스템 정확히 파악하기 어느부분이 느린지, 어느 RAM을 많이 쓰는지, 디스크 I/0 나 네트워크 I/O 를 과도하게 발생시키는 부분이 어디인지 확인 1. 시간측정(time.time(), decorator) 2. 어떤 함수가 오래걸리는지 측정(cProfile -> snakeviz 로 시각화) 3. 선택 함수를 한줄씩 프로파일링(line_profiler) 4. CPU에서 실행된 명령의수, CPU 캐시가 효율적으로 활용되었는지 검사(perf stat) 5. RAM 사용량 측정(memory_profiler, psutil) 파이썬은 문장을 왼쪽에서 오른쪽으로 검사하며 기회주의적이기 때문에 빨리 긑나는 검사를 등식의 왼쪽에 두는게 좋다 성능 향상을 위한 가설설정 1. 쉽게 검증할수 있는..
신입 개발자가 느끼고있는것
이 글을 쓰고있는 계기는 우연히 조졸두님 블로그 의 게시글을 읽고 떠오르는 생각을 정리하기 위함이다 이 게시글에서는 미운오리 새끼 방송의 신동엽의 말이 나오는데, 바로 "과연 내가 이만큼 사랑을 받을 자격이 있나" 이다. 우리 회사는 개발자간의 수평적 구조를 중요시 생각한다. 이에 수평적 구조라 함은 프로젝트 안에서 기술파트 부분에 대한 존중이 깔려있다. 그래서 새로운 기술과 시스템을 개발하려할때 전폭적인 지원을 해준다. 나또한 신입으로 들어와서 가장 많이 들었던 질문이 "하고 싶은게 있으세요" 였다. 신입으로 들어왔었기 때문에 뭐든지 배우는 자세로 들어왔던 나는 이 질문에 당황을 많이했었는데, 회사가 하는 프로젝트에 나를 끼워넣어서 하는 시스템이 아닌, 내가 하는 시스템에 회사가 지원을 하는 형식 이였..
데이터 중심 어플리케이션 설계
오늘날 어플리케이션은 계산중심과는 다르게 데이터중심이다 구동어플리케이션이나 다른 어플리케이션에서 나중에 다시 데이터를 찾을수있게 데이터를 저장(데이터 베이스) 읽기 속도 향상을 위해 값비싼 수행결과를 기억(캐시) 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로 필터링할수 있게 제공(검색 색인) 비동기 처리를 위해 다른 프로세스로 메세지 보내기(스트림 처리) 주기적으로 대량의 누적된 데이터를 분석(일괄 처리)