총 게시물 44건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[서버]

각종 DataReader 성능 비교

글쓴이 : 앱개발재밌어 날짜 : 2013-06-05 (수) 11:18 조회 : 7168
글주소 : http://www.androidside.com/B25/6
 
  MFK 애플공인트레이닝센터
서울 유일의 Logic Pro X 애플공인교육기관, 애플 공인 자격증 시험
www.mfk.co.kr
  미디런 스튜디오
Logic Pro X 애플공인교육센터, 애플공인프로자격증, 작곡, 편곡, 프로듀싱
www.midilearn.com
  로직 코파데이타 코리아
자동화소프트웨어, HMI, SCADA, MMI, zenon, straton공급
www.copadata.com
신청하기


게임내에서 사용되는 각종 데이터들, 주로 기획에서 만들어서 서버/클라이언트에서 읽을수 있는 데이터로 변환해서 게임내에서 다양하게 쓰이게 됩니다. 예를 들면 아이템 데이터, NPC데이터, 스킬데이터 등이 있겠습니다. 이런 데이터들은 보통 서버가 시작될때 메모리로 읽어들여서 로직내에서 필요한 데이터가 있을때 저장된 특정한 컨테이너(벡터, 맵, 해쉬테이블 등)에서 값을 가져오게 됩니다.  저는 DataReader라고 부르고 있습니다. 이 DataReader를 메모리상에 상주 시키지 않고 DB를 이용해 볼까 하는 생각이 들어서 성능 비교를 해보게 되었습니다. (특성상 Insert/Update/Delete 속도는 별 의미가 없으므로 Select속도만 측정)

사용된 컨테이너(혹은 DB)
- Array(strcmp) : 일반 배열 입니다. for문을 통해 차례대로 키값을 비교하여 값을 찾습니다.
- Array(index) : 일반 배열을 index로 직접 접근합니다.
- Map(string) : 키값이 string인 std::map입니다. map.find()로 값을 찾습니다.
- Map(HashFunction) : 해쉬함수를 이용하여 키값이 unsigned long인 map입니다. 
- HashMap(string/HashFunction) : 키값이 string/unsigned long 인  stdext::hash_map입니다.
- SQLite(file/memory) : 오픈소스 파일DB입니다. 
- MySQL, MSSQL : ...

데이터
- 구조
struct TestData
{
    char code[12]; // 키값
    int level;
    short diatance;
    char name[32];
};
- 건수 : 2만건 

쿼리문 : SELECT code, level, distance, name FROM tbl_Perf WHERE code = ‘code19000’

성능 비교표 

Debug



Release



결과
역시 배열을 index로 직접 접근하는 방법과 Hash함수를 이용한 컨테이너들이 빠른 성능을 보여줍니다. index 접근 방법을 제외하고는 Debug에서는 hashmap이 Release에서는 map이 미세하게 앞서고 있습니다. SQLite도 DB중에서는 file, memory 버젼 모두 좋은 성능을 보여주고 있습니다.

Map/HashMap이 역시 빠르기는 하지만 메모리에 상주시키는 것보다 외부로 빼면 메모리도 절약하고 서버의 복잡도도 줄일수도 있고 중간에 데이터를 교체할 수도 있는 등의 유연한 구조를 만들수 있을것 같아서 실제 프로젝트에서는 Map과 SQLite를 병행해서 사용해볼까 합니다. Factory 패턴이나 Facade 패턴을 사용하면 간단하게 교체가 가능하겠지요. SQLite는 구조가 단순하고 사용이 간편한 파일 DB입니다.(실행파일도 하나 데이터 파일도 하나.) 메인 DB로 사용하는 것보다는 위와 같은 용도나 게임서버 다운시 데이터 보전 용도로 사용하면 좋을 것 같습니다.

ps. SQLite 메모리 버전 테스트 결과 추가 했습니다.
ps2. 성능 비교에 문제가 있어서 다시 테스트 한 그림으로 올렸습니다.
ps3. Hash함수 포함한 버전으로 수정했습니다.

출처 : 온라인서버제작자모임




Jenis 2013-06-19 (수) 15:42
좋은 정보감사합니다. 하지만 아무리 좋은 정보와 좋은 성능을 가지구있어두 대부분의 개발자들이 100%활용하지
못하는 취약점을 가지구있습니다.

만약에 개발자들이 개발에 대한 기초적인 그런 부분을 인지하고 db를 만들시에도 정확하게 그림을 그려나가는 분석능력을 가진다면 나와있는 성능표대로도 효과를 발휘하겠지요 ㅎ

아 그리구 한가지더 무조건 좋은 DB라고 사용하는게 아닌 내가 만드는 프로그램에 적당한 DB를 선택하는것도 아름다운 행동이지요
댓글주소
     
     
앱개발재밌어 2013-06-25 (화) 09:48
좋은 답변 감사합니다~ 일리있는 말씀이셔요~~~
댓글주소
glaxy 2013-12-18 (수) 02:36
좋은 정보 감사합니다
댓글주소
hi
이전글  다음글  목록 글쓰기

총 게시물 44건, 최근 0 건 안내 RSS
번호 분류 제목 글쓴이 날짜 조회
44 서버
현재 대학생인데 과제중입니다 핸드폰을 이용하여 마우스를 대체하는 어플리케이션 및 프로그램을 만드려고하…
박민용 10-05 281
43 OS
이카루스031 05-09 2118
42 OS
이카루스031 05-09 2287
41 OS
Linux 시스템 로그인에 관련된 정보 로그 파일혹 Linux 관리가 필요한 분들 참고하세요.....시스템에 접근한 사람들 …
예민한인어 03-14 2643
40 OS
Postfix를 이용한 메일서버 개설 http://www.atblog.co.kr/?p=4877
카이로 12-18 2911
39 서버
sudo apt-get install ntpdate sudo apt-get install rdate sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime sudo rdate -s time.bora.net
카이로 08-01 4320
38 VPS
VPS 간단 비교 설명  디지털오션 DigitalOcean  1. 저렴한 가격(최소 5$부터 시작) 2. 매우 쉬운 UI 3. 인기있…
카이로 07-10 4586
37 서버
SCP를 사용하여 자동으로 데이터백업   v     상황: 특정 디렉터리나 특정 데이터를 원…
카이로 07-10 4306
36 서버
리눅스 서버 간에 파일 복사에 사용되는 명령어는 scp가 대표적이겠죠? scp에 대해서 간략하게 설명하고자 합니…
카이로 07-10 5827
35 서버
Introduction Nginx Nginx is a fast and lightweight alternative to the sometimes overbearing Apache 2. However, Nginx just like any kind of server or…
카이로 07-08 4286
34 디지털오션
출처. http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=226630 들어가기에 앞서...-블로그에 쓴 글을 그대로 …
카이로 07-07 4544
33 서버
최상위 index.php에 아래 코드 입력 ini_set('session.cookie_domain', '.domain.com' );
카이로 07-06 3467
32 VPS
DigitalOcean vs Linode  디지털오션과 리노드 상세 비교 This is a very detailed DigitalOcean vs Linode VPS cloud hosting comparison r…
카이로 07-06 4433
31 디지털오션
How To Choose an Effective Backup Strategy for your VPS Introduction An important consideration when storing your work and data in a digital environ…
카이로 07-06 3485
30 VPC
2013 VPS Benchmarks - Linode, Digital Ocean, Hot Drupal Every year or two, I like to get a good overview of different hosting providers' VPS performa…
카이로 07-06 5202
29 VPC
Linode vs DigitalOcean, performance benchmarks I’ve been a Linode fan and customer for years, but just this week I was made aware of a competing …
카이로 07-06 3001
28 VPC
Live Benchmarks from the Cloud Cloudlook provides constantly updated benchmarksfor server instances at popular public cloud providers. …
카이로 07-06 3498
27 VPC
사양이나 필요한 부분만 보세요^^ Linode 2GB VPS versus DigitalOcean 2GB VPS – Centmin Mod Nginx CLI install benchmarks Linode has…
카이로 07-06 3274
26 서버
for file in *.log; do     iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file" done
카이로 07-05 3044
25 서버
우분투에서 한국시간으로 변경하기 ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
카이로 07-04 3085
 1  2  3  맨끝
 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기