본문 바로가기

반응형

성능 및 기능개선

(3)
scapy send request 샘플코드 from scapy.all import *from scapy.layers.inet import IP, TCPdef send_ack(_packet): ans = IP(dst=_packet[IP].src, flags='DF', ttl=128) / TCP( flags='A', sport=_packet[TCP].dport, dport=_packet[TCP].sport, window=513, seq=_packet[TCP].ack, ack=_packet[TCP].seq + len(_packet.load), ) del ans[TCP].chksum send(ans, verbose=False) return "%s\n =..
Google map API 마커 성능개선에 대하여 얼마 전까지 회사에서 Google map API를 사용해서 지리정보를 표현해야 하는 기능을 만들었습니다. 많은 사람들이 사용하는 API라 큰 고민 안하고 사용하면 될 줄 알았는데, 무지성으로 사용하다 보니 역시 성능이 걸림돌이 되더군요. 마커의 개수가 많아지다 보니, 지도를 불러오는데 시간이 엄청걸리더니 급기야 응답이 없는 상황까지 이르렀습니다. 오늘은 이 지도위에 마커를 표현할 때, 효율적으로 표현할 수 있는 방법에 대해서 다룰까 합니다. 굉장히 쉽고 일반적이면서, 효과를 많이 볼 수 있는 방법들 위주로 3가지를 소개하려고 합니다. 마커클러스터 이용하기(필수) 뷰포인트(혹은 중심점)을 기준으로 반경 몇 km 내 마커만 로드하기(필수) 공간DB(Geography) 쿼리 이용하기(선택) 1. 마커클러스터 ..
C API strcat을 무조건 신뢰하면 안되는 이유 회사에서 한창 마이크로그리드 플랫폼 프로젝트 진행 중에 C로 개발된 통신 프로그램의 성능이슈가 있어, 성능개선 작업중에 발견했던 문제를 공유합니다. C에서 문자열을 합칠 때, 흔히들 내장 API로 제공되는 sprintf 혹은 strcat을 많이 사용합니다. 하지만, 우리가 사용하는 strcat은 누적해서 문자열을 더해나가는 조건에선 상당히 비효율적으로 문자열을 합친다는 거 알고계셨나요?? strcat은 기본적으로 destination으로 주어진 문자열을 처음부터 문자열의 끝을 의미하는 '\0'를 만날 때까지 탐색한 뒤, '\0'부터 입력으로 주어진 source 문자열을 더해나갑니다. 만약 아래와 같은 코드가 실행된다고 가정해 봅시다. #define MAX_BUF 1000000 int main() { ch..

반응형