혼새미로의 블로그
close
프로필 배경
프로필 로고

혼새미로의 블로그

  • 분류 전체보기 (701)
    • 일상다반사 (7)
    • 교양 (6)
    • 생활 유용 정보 (230)
    • 유용한 웹사이트 (4)
    • 유틸리티 (38)
    • 컴퓨터 공학 (351)
      • WebAssembly (1)
      • JavaScript (39)
      • Algorithm (12)
      • Web (3)
      • C++ (31)
      • Go (2)
      • Qt (51)
      • OS (2)
      • A.I. (8)
      • 작업일지 (2)
      • Backend Engineering (3)
    • 게임 (38)
      • 포탈 : 스마일 (9)
      • 하이더 온라인 - 개발일지 (1)
    • 전문연구요원 (11)
    • 감상문 (3)
      • 책 (2)
      • 영화 (1)
      • 게임 (0)
    • 사진 (1)
      • 자연의 모습 (1)
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
C++ vs Node.js vs Go - 멀티스레드 퀵정렬 수행속도 비교

C++ vs Node.js vs Go - 멀티스레드 퀵정렬 수행속도 비교

[실험환경] CPU : AMD Ryzen 7 1700 8-Core Processor Memory : 32.0 GB OS : Windows 10 Pro 데이터 개수 : 2천만개 ~ 3억 2천만개 스레드 개수 : 16개 값의 범위 : 0 ~ 1,000,000,000 [분석] 데이터 개수가 적을 때는 Node.js 가 가장 느린 성능을 보여주었으며, 데이터 개수가 증가함에 따라 Node.js가 Go를 제치고 더 빠른 성능을 보여주었다. Node.js는 멀티스레드를 사용하기 위해 worker_thread를 사용하는데, 각 스레드들이 수행할 작업이 적힌 스크립트 파일 (js)을 읽어서 수행하기 때문에 초반에 지연이 걸리게 되었다. 모든 경우에서 C++가 가장 빠른 속도를 보여주었다. 데이터 개수가 1억 6천만개 ..

  • format_list_bulleted 컴퓨터 공학
  • · 2021. 6. 7.
  • textsms
Node.js와 C++의 퀵정렬 속도 비교 (+메모리 할당 개선)

Node.js와 C++의 퀵정렬 속도 비교 (+메모리 할당 개선)

재귀 없는 퀵정렬을 JS와 C++로 구현하면서 수행속도를 측정하고자 하였다. C++은 정수형 타입이더라도 1바이트, 2바이트, 4바이트, 8바이트로 개발자가 선택하여 사용해야 하는 반면, JS는 정수형과 실수형 타입 모두 number로 사용되고 있다. 다만, JS의 경우 ArrayBuffer를 통해 원하는 바이트 크기의 버퍼를 생성할 수 있고, Int32Array() 함수로 해당 버퍼를 래핑하여 배열 원소의 크기를 4바이트로 사용할 수 있다. [기본 배열 사용시] JS에서 1억개 할당 시 기본 배열은 최대 6.8GB의 메모리 공간을 차지하였다. 정렬 시 시간은 13.452초 소요되었다. 메모리 할당 시간은 36.656초 소요되었다. [고정 크기 배열 사용시] JS에서 1억개 할당 시 고정 크기 배열은 4..

  • format_list_bulleted 컴퓨터 공학/JavaScript
  • · 2021. 6. 7.
  • textsms
Node.js에서 기본 정렬 / 합병정렬 / 퀵정렬 속도 비교

Node.js에서 기본 정렬 / 합병정렬 / 퀵정렬 속도 비교

실험환경 값의 범위 : 0~1억 데이터 개수 : 천만개 ~ 3천만개 반복횟수 : 3회 Note : 합병정렬은 기본 배열의 두배 크기로 메모리 공간을 사용합니다. 실험결과 1000만 1500만 2000만 2500만 3000만 기본정렬 4.16초 6.845초 9.142초 11.421초 14.021초 합병정렬 2.632초 3.881초 5.225초 6.589초 8.358초 퀵정렬 2.129초 3.172초 4.261초 5.487초 6.557초 /** INFO: 파라미터 만큼 배열을 생성하고 랜덤값 입력 */ function generateRandomArray(numData){ let arr = new Array(numData).fill(0); for(let i=0;i= high){ //INFO: 한개밖에 없으면 ..

  • format_list_bulleted 컴퓨터 공학/JavaScript
  • · 2021. 6. 7.
  • textsms

퀵정렬에서 피봇을 선택하는 방법

12345678910111213141516n = high - low + 1;b = (low + high) >> 1;//middle elementif (n>7) { a = low; c = high; if (n > 40) { d = n >> 3; a = MED3(a, a + d, a + 2 * d); b = MED3(b - d, b, b + d); c = MED3(c - 2 * d, c - d, c); } b = MED3(a, b, c);}if (b != high) { tmp = arr[high]; arr[high] = arr[b]; arr[b] = tmp;}Colored by Color Scriptercs

  • format_list_bulleted 컴퓨터 공학
  • · 2018. 9. 12.
  • textsms

재귀 없는 퀵정렬 소스코드

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#include #include #include #define N 10000000#define R 100000#define STKSIZE N unsigned int arr[N]; int top = 0;int stack[STKSIZE]; void init_stack() { top = 0;} void push(int i) { if (top 0) { p = arr[r]; i = l - 1; j = r; while (1) { while (arr[++i]..

  • format_list_bulleted 컴퓨터 공학
  • · 2017. 3. 18.
  • textsms

[스크랩]퀵정렬이 힙정렬보다 성능이 좋은 이유

제가 알고 있기로 정렬 알고리즘의 복잡도는 nlogn 이하로 나올 수 없다고 알고 있습니다. 다름이 아니라 궁금한건 퀵정렬과 힙정렬의 복잡도는 각각 nlogn이고 최악의 경우 퀵정렬은 n^2, 힙정렬은 nlogn으로 알고 있습니다. 최악의 상황까지 고려했을 때는 힙정렬이 훨씬 좋아보이는데 실제 돌려보면 퀵정렬이 퍼포먼스가 더 좋게 나옵니다. 왜 퀵정렬이 더 빠른지 궁금하고 덧붙여서 퀵정렬과 힙정렬의 차이점에 대해 자세히 알고 싶습니다. ---------------------------------------------- 퀵정렬은 배열구조를 그대로 이용할 수 있는 특징이 있습니다. 알고리즘에 상관없이 계산에 필요한 데이터를 다루는 과정은 반드시 필요합니다. 퀵정렬이 배열구조를 그대로 쓸 수 있다는 것은 데이..

  • format_list_bulleted 컴퓨터 공학
  • · 2015. 11. 27.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (701)
    • 일상다반사 (7)
    • 교양 (6)
    • 생활 유용 정보 (230)
    • 유용한 웹사이트 (4)
    • 유틸리티 (38)
    • 컴퓨터 공학 (351)
      • WebAssembly (1)
      • JavaScript (39)
      • Algorithm (12)
      • Web (3)
      • C++ (31)
      • Go (2)
      • Qt (51)
      • OS (2)
      • A.I. (8)
      • 작업일지 (2)
      • Backend Engineering (3)
    • 게임 (38)
      • 포탈 : 스마일 (9)
      • 하이더 온라인 - 개발일지 (1)
    • 전문연구요원 (11)
    • 감상문 (3)
      • 책 (2)
      • 영화 (1)
      • 게임 (0)
    • 사진 (1)
      • 자연의 모습 (1)
최근 글
인기 글
최근 댓글
태그
  • #QT
  • #컴퓨터
  • #알고리즘
  • #게임
  • #nodejs
  • #c++
  • #qt프로그래밍
  • #큐티프로그래밍
  • #It
  • #JavaScript
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바