반응형

go 6

심플 웹 서버 언어 별 성능 비교 (Go, Rust, Node.js)

테스트 환경 이름 설명 CPU AMD Ryzen 7 1700 Memory DDR4 32GB 테스트 툴 autocannon autocannon Fast HTTP benchmarking tool written in Node.js www.npmjs.com 옵션 동시요청 : 2500 요청시간 : 30초 파이프라이닝 : 4 > autocannon -c 2500 -d 30 -p 4 127.0.0.1:8081 테스트 대상 (Node.js) express (Node.js) hyper-express Go Rust 테스트 방법 각 웹서버는 '/' path 만 구현되어 있으며, 요청 수신 시 Hello를 응답한다. 각 웹 서버 별 30초 동안 요청 처리 개수를 측정한다. 결과 예상대로, express가 가장 낮은 성능을 보..

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천만개 ..

컴퓨터 공학 2021.06.07

멀티스레드 환경에서 합병정렬을 통한 C++과 Go언어 성능비교

[테스트 환경] *운영체제 : 윈도우 10 프로 (1903 버전) *CPU : AMD Ryzen 7 1700 8-core *RAM : 32 GB *C++ 컴파일러 : MinGW 8.1.0 64-bit *Go 컴파일러 : 1.13.5 *데이터 최대값 : 100,000,000 *연산 : 멀티스레드 기반의 합병정렬 [데이터 변수] *스레드 개수 : 1, 2, 4, 8, 16, 32, 64 → 데이터 개수 100,000,000 개 고정 *데이터 개수 : 20,000,000, 40,000,000, 60,000,000, 80,000,000, 100,000,000 → 스레드 개수 16 개 고정 [결과] 스레드 개수 1 2 4 8 16 32 64 C++ 16.8536 8.8936 5.017 3.366 2.79 2.71..

컴퓨터 공학 2020.07.27

프로그래밍 언어 별 성능 측정

원본에서 더 깔끔합니다. [알고리즘] 비교 알고리즘: 피보나치 수열 반복횟수: 5회 피보나치 값: 38 [C++] (MSVC, 최적화 안함) #include #include "HourMeter.h" using namespace std; int fibonacci(const int value) { if (value == 0 || value == 1) { return 1; } return fibonacci(value - 1) + fibonacci(value - 2); }; void main() { HourMeter hm; int fibValue{ 38 }; for(int i=0;i> Java > Golang > C# >파이어폭스> Node.js > 크롬 > 엣지 > LuaJIT > Rust >>>>> Pyth..

컴퓨터 공학 2020.07.04

덕 타이핑 예시

package main import "fmt" // Duck 오리 구조체 type Duck struct { } func (d Duck) quack() { fmt.Println("꽥~!") } func (d Duck) feathers() { fmt.Println("오리는 흰색과 회색 털을 가지고 있습니다.") } // Person 사람 구조체 type Person struct { } func (p Person) quack() { fmt.Println("사람은 오리 흉내를 냅니다. 꽥~!") } func (p Person) feathers() { fmt.Println("사람은 땅에서 깃털을 주워서 보여줍니다.") } // Quacker 꽥 인터페이스 type Quacker interface { quack()..

컴퓨터 공학/Go 2020.02.01

Go 언어의 활용범위

Go 언어는 웹 브라우저, 서버, 데이터베이스 등 규모가 크고 복잡한 애플리케이션을 개발하는 데 적합하다. 이러한 분야는 이제 메모리 관리에 시간을 쏟기보다는 로직에 집중하는 것이 중요해졌다. 따라서 메모리를 일일이 신경쓰지 않아도 되는 Go 언어로 작성하면 생산성을 높일 수 있다. 하지만, 그림과 같이 Go 언어는 메모리 관리를 철저히 해야 하는 시스템 라이브러리 개발에는 적합하지 않다. 그리고 메모리 장치에 직접 접근해야 하는 운영체제와 장치 드라이버도 개발하기 힘들다.요약하자면 Go 언어는 메모리 관리가 다소 느슨해도 되고, 규모가 크고 복잡하며 유지보수가 빈번한 곳에서 편리하고 사용할 수 있다. 그리고 다양한 네트워크 라이브러리 (패키지)를 제공하므로 인터넷 프로그래밍에 유용하다.출처: [가장 빨..

컴퓨터 공학/Go 2020.01.29
반응형