반응형

JavaScript 16

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..

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: 한개밖에 없으면 ..

값에 따른 isNaN() 결과 정리

undefined 타입undefined ⇒ trueobject 타입null ⇒ false{} ⇒ truenumber 타입1 ⇒ falseNaN ⇒ truenew Date() ⇒ falsestring 타입'37' ⇒ false ('37'은 숫자 37로 변환됨'37.37.' ⇒ false ('37.37'은 숫자 37.37로 변환됨'123abc' ⇒ true'' ⇒ false (빈 문자열은 0으로 변환됨)' ' ⇒ false (공백이 있는 문자열은 0으로 변환됨)new Date().toString() ⇒ trueboolean 타입true ⇒ falsefalse ⇒ false

데이터 타입에 따른 Boolean 형변환 결과 정리

undefined 타입 undefined ⇒ false object 타입 null ⇒ false {} ⇒ true string 타입 '' ⇒ false (문자열 값이 하나라도 없으면 false) 'a' ⇒ true (문자열 값이 하나라도 있으면 true) number 타입 0 ⇒ false 1 ⇒ true -1 ⇒ true NaN ⇒ false (0과 같지 않음) boolean 타입 true ⇒ true false ⇒ false 특이사항 null 값을 가진 변수의 타입을 조회해보면 항상 object 타입임. 이에 따라, null은 object 타입에서만 사용된다고 볼 수 있음

타입스크립트 기반 간단한 TCP 서버/클라이언트 개발

이번에는 타입스크립트를 사용하여 간단한 TCP 서버/클라이언트를 만드는 방법에 대해 설명합니다. [TCP 서버] tcp_server라는 폴더를 생성한 후에 터미널에서 다음과 같이 입력하여 프로젝트를 초기화합니다. yarn init 그러면 다음과 같은 package.json 파일이 생성됩니다. { "name": "tcp_server", "version": "1.0.0", "main": "index.js", "license": "MIT", "private": true } 그리고 다음과 같이 입력하여 타입스크립트 환경을 구성합니다. yarn add -D typescript tsc --init 그러면 다음과 같이 tsconfig.json 파일이 생성됩니다. 아래 내용과 다르면 같게 변경해줍니다. { "compi..

반응형