[C/C++/AVX] 이동 평균 (Moving Average) 성능 비교

이동 평균(Moving Average: MA)을 계산하기 위해서는 주어진 기준점에서 정해진 MA Window 크기(개수)만큼 수를 더해서 Window 크기로 나누기를 해주면 된다. 그림 1은 MA 계산을 하기 위한 식이다. C/C++을 사용해서 특정 Array의 첫 번째 Index의 Moving Average를 구한다면 MA Window 크기(개수)만큼 숫자를 더해서 MA 값을 구한다 (편의상 나누기 연산을 수행하지 않았다). 다음 Index의 MA 값을 구할 때는 … Read more

[C/C++] 가변 인자 사용 방법 (Variable Length Argument)

실험 환경 OS: Ubuntu 18.04 g++: 7.5.0 C/C++에서 함수를 만들 때 인자의 개수가 정해져 있지 않은 경우 가변 인자를 사용해서 편리하게 함수를 제작할 수 있다. 저의 경우 Debug를 위한 나만의 Printf를 제작하는 과정에서 사용하였다. 가변 인자 사용방법에 대해서 간단히 정리해보았다. 사용 방법 함수 인자 부분에 “…” 을 추가함 예: mkFindMin(int numArg, …) {} va_list( )를 … Read more

[C/C++] 레퍼런스(참조자) vs. 포인터 (Reference vs. Pointer)

전문가를 위한 C++(출처1) 책을 읽다가 Reference(레퍼런스, 참조) 변수에 대해서 알게 되어서 정리하였다. 개인적인 느낌이지만 Reference 변수를 잘 사용하면 Pointer를 사용할 때 보다 실수를 적게 하면서 프로그램을 작성할 수 있을 것 같다. Pointer와 Reference 변수를 선언해서 사용하는 방법은 아래와 같다. 기본적으로 함수를 호출하면 변수를 복사해서 사용한다. 하지만 Pointer와 Reference를 사용하면 변수를 복사하지 않고 참조 전달 방식(Pass … Read more

[C/C++] 수행 시간 측정 방법 (clock_gettime() 함수)

실험환경 OS: Ubuntu 18.04 코드를 작성하고 정확한 동작 시간을 확인해야 하는 경우가 있다. 이러면 clock() 함수를 사용해서 시간을 측정해도 되지만 Multi-Threads 프로그램을 사용하는 경우 잘못된 결과가 출력되는 경우가 발생한다. 이런 경우 clock_gettime(…) 함수를 사용해서 수행 시간을 측정하면 된다. 아래 코드 1은 clock_gettime(…) 함수를 사용해서 시간을 측정하는 예제 코드이다. 코드 1: 실행 시간을 측정하기 위한 코드 … Read more

[Python] Google Sheets 읽기

실험 환경 OS: Ubuntu Linux 18.04 Python Version: 3.7 gspread, oauth2client 설치 필요 $pip install gspread oauth2client 인증 과정 먼저 API를 사용하기 위해서 구글 개발자 콘솔에 접속해서 몇 가지 설정을 진행해야 한다. 아래 사이트에 접속한 다음에 그림에 따라서 인증 과정을 진행하면 된다. Web: https://console.developers.google.com/ 그림 2 Step 3의 Project Name은 원하는 이름을 선택하면 된다. 그림 … Read more

[Bash] 함수(Function) 사용하기

목적: 함수를 사용해서 결과 Return 하기 환경: Ubuntu 18.04 결과 설명 Bash에서 Function은 FUNC_NAME() { …코드… } 형태로 작성을 하면 됨 “$1”, “$2” 순서로 Function Parameter를 받을 수 있음  “$?”를 사용해서 함수 Return 값을 가져옴 Return의 경우 정수만 Return 할 수 있는 것으로 판단됨. String을 Return 하고 싶은 경우 Global Variable을 생성해서 결과를 저장하는 방식을 … Read more

[Bash] 현재 시간 출력하기

목적: 현재 시간을 알기 위해서 사용 환경: Ubuntu 18.04 코드 결과 설명 date +’FORMAT’ 을 사용해서 원하는 시간, 날짜 등을 확인 할 수 있음 (주의 사항) “date” 다음에 Space가 있어야 하며 +’FORMAT’에는 Space가 있으면 안 됨 FORMAT의 종류는 년도, 월, 일, 시간, 초 등 아주 다양함 (상세한 Format 종류는 출처 2 참조) 출처 https://www.cyberciti.biz/faq/how-to-read-time-in-shell-script/ https://www.cyberciti.biz/faq/unix-linux-getting-current-date-in-bash-ksh-shell-script/

[Bash] If/Else 조건문(Condition) 사용 방법

목적: if/else Condition(조건문)을 사용하는 방법 정리 환경: Ubuntu 18.04 코드 결과 설명 while true, if [ … ], 다음에 있는 “;”은 줄 바꿈을 하지 않고 사용하기 위해서 사용함. “do”, “then”을 줄바꿈해서 사용하는 경우 “;”를 제거해도 됨 if, elif, else 순서로 작성을 해야 함. if, elif 다음에는 “then”을 추가 후 코드를 작성해야 함  Condition(조건문)은 [ ] … Read more

[Python] argparse 사용 예제

Python으로 작성한 코드를 실행할 때 특정 Argument를 추가해야만 실행이 가능하도록 코드를 작성하고 싶은 경우가 발생한다. Python에서 “argparse”를 사용하면 쉽게 Argument를 추가할 수 있다. Argparse 사용하기 아래 코드1은 Argparse를 사용하는 예제 코드이다. argparse.ArgumentParser(…): argparse를 사용하기 위해서 가장 먼저 해당 코드를 사용해서 Variable을 생성한다. VARIABLE.add_argument(…): 생성된 Variable에 add_argument(..)를 사용해서 Argument 옵션을 하나씩 추가한다. 위 2가지가 Argparse를 사용하는 … Read more

[Python] namedtuple (네임드튜플) 사용 (Struct like C)

namedtuple은 C언어 Struct와 같이 Value를 여러 개 저장해서 Variable 이름으로 접근이 가능하다. 개인적으로 C Struct와 비슷해서 사용하게 되었다. 출처 1에 따르면 namedtuple은 Python 기본자료형이 아니라고 한다. namedtuple을 사용하기 위해서는 아래와 같이 Collections를 추가해야 한다. from collections import namedtuple namedtuple 사용하기 출처 1에 제공하는 예제를 조금 변경하여서 아래 예제 코드를 하나 작성하였다. from collections import namedtuple … Read more