SlideShare a Scribd company logo
swig 를 이용한 성능개선용
C++ 모듈 랩핑
Is python slow?
C/C++ == Speed
출처: https://attractivechaos.github.io/plb/
Java Native Interface, JNI
먼저 랩퍼 클래스를 만든다
그걸 컴파일하면 헤더파일이 나온다
헤더파일의 시그네처를 복붙한다
python API
#include <Python.h>
그냥 쓰면 된다
하지만 데이터를 Python API 로 직접 파싱 및 생성해야 한다
Platform Invoke
P/Invoke
DLL 을 만든 다음 Pinvoke 로 랩핑한다
각 언어를 위해 특별히 코드를 작성해야 하기도 한다.
랩핑을 해줘야 하는 경우도 있다
타입 간에 마샬링을 직접 해줘야 하는 경우도 있다
swig를 이용한 C++ 랩핑
swig를 이용한 C++ 랩핑
Interface File C/C++ Source File C/C++ Header File
SWIG C/C++ Compiler
C++ Wrapper
Source File
Target Language
Wrapper Source File
Shared Library
Header.h
Test.i
C:UsersUser>swig –csharp Test.i
Why Should I Use This????
TestClass.cs
ConsoleAppPInvoke.cs
예외처리가 매우 확실하다
100프로 터진다
개발사이클이 엄청
짧아진다
하지만 물론 단점도 있다
툴이 지원하는 C/C++ 기능들에 함정이 엄청 많다
툴이 지원하는 C/C++ 기능들이 한정적이다
레퍼런스 겁나 길다… 진짜로..
언어별로 툴이 처리하는 방식이 다르다
사용하기 위해서는 Swig 가 지원하는 범위와, 처리하는 방법을 잘 파악해야 한다
std::auto_ptr
std::deque
std::list
std::map
std::set
std::string
std::vector
std::array
std::shared_ptr
출처: http://www.techmikael.com/2010/01/net-serialization-performance.html
swig.org
swig를 이용한 C++ 랩핑

More Related Content

PDF
Managing I/O in c++
PPT
Oop lec 2(introduction to object oriented technology)
PPTX
Introduction to python history and platforms
PDF
Graphics Programming in C under GNU Linux (Ubuntu distribution)
PPTX
Python Unit II.pptx
PPT
PDF
Classes and objects
Managing I/O in c++
Oop lec 2(introduction to object oriented technology)
Introduction to python history and platforms
Graphics Programming in C under GNU Linux (Ubuntu distribution)
Python Unit II.pptx
Classes and objects

What's hot (20)

PPTX
Embedded C.pptx
DOC
C AND DATASTRUCTURES PREPARED BY M V B REDDY
PDF
Inheritance and interface
PPTX
Constructor in java
PPTX
Memory management in python
PDF
Function in C
PPTX
ADA programming language
PPT
Memory Management In C++
PDF
Embedded linux system development (slides)
PPTX
Java program structure
PDF
C programming notes
PDF
Algoritmos - Aula 05 B - Correcao de Exercicios
PDF
Health & Wellness Tracker
PDF
Interfaces e polimorfismo
PPT
Java applets
PDF
Python programming : Exceptions
PPTX
Introduction Of C++
PPT
Inheritance
ODP
Pointers in c++ by minal
Embedded C.pptx
C AND DATASTRUCTURES PREPARED BY M V B REDDY
Inheritance and interface
Constructor in java
Memory management in python
Function in C
ADA programming language
Memory Management In C++
Embedded linux system development (slides)
Java program structure
C programming notes
Algoritmos - Aula 05 B - Correcao de Exercicios
Health & Wellness Tracker
Interfaces e polimorfismo
Java applets
Python programming : Exceptions
Introduction Of C++
Inheritance
Pointers in c++ by minal
Ad

More from NAVER D2 (20)

PDF
[211] 인공지능이 인공지능 챗봇을 만든다
PDF
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
PDF
[215] Druid로 쉽고 빠르게 데이터 분석하기
PDF
[245]Papago Internals: 모델분석과 응용기술 개발
PDF
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
PDF
[235]Wikipedia-scale Q&A
PDF
[244]로봇이 현실 세계에 대해 학습하도록 만들기
PDF
[243] Deep Learning to help student’s Deep Learning
PDF
[234]Fast & Accurate Data Annotation Pipeline for AI applications
PDF
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
PDF
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
PDF
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
PDF
[224]네이버 검색과 개인화
PDF
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
PDF
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
PDF
[213] Fashion Visual Search
PDF
[232] TensorRT를 활용한 딥러닝 Inference 최적화
PDF
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
PDF
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
PDF
[223]기계독해 QA: 검색인가, NLP인가?
[211] 인공지능이 인공지능 챗봇을 만든다
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[215] Druid로 쉽고 빠르게 데이터 분석하기
[245]Papago Internals: 모델분석과 응용기술 개발
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[235]Wikipedia-scale Q&A
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[243] Deep Learning to help student’s Deep Learning
[234]Fast & Accurate Data Annotation Pipeline for AI applications
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[224]네이버 검색과 개인화
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[213] Fashion Visual Search
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[223]기계독해 QA: 검색인가, NLP인가?
Ad

swig를 이용한 C++ 랩핑