C++ - Ubuntu 18 에서 g++(gcc) 설치

출처: https://linuxconfig.org/how-to-install-g-the-c-compiler-on-ubuntu-18-04-bionic-beaver-linux 우분투 18 에서 apt-get으로 설치하는 g++ 버전은 7.3 이다. 7.3 버전은 C++17 표준을 지원한다. C++ Standards Support in GCC 설치 명령어 $ sudo apt install g++ 아래 명령어로 버전을 확인할 수 있다. $ g++ –version
더 읽기

golang - atomic

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. atomic atomic 패키지는 int32, uint32, int64, uint64, uintptr의 5가지 타입 각각에 Add, CompareAndSwap, Load, Store, Swap 5 종류의 작업을 제공한다. atomic 함수 대체로 같은 의미의 표현 c = atomic.AddInt32 (&...
더 읽기

golang - 배열과 slice 기초

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 배열 배열 기초 배열 사용 // 크기 4, int 형 배열 var a [4]int // 0번째 요소에 1 대입 a[0] = 1 // 변수 i를 선언하고 a[0]을 i에 대입 i...
더 읽기

C++ - 라이브러리를 사용한 프로그램 고속화

tcmalloc, jemalloc, nedmalloc malloc 대체에 의한 고속화. 아래와 같이 실행함으로써 malloc이 대체되어 실행된다. LD_PRELOAD=/usr/lib/libtcmalloc.so ./exefile 상황에 따라 다르겠지만 tcmalloc이 제일 좋은 듯. google::dense_hash_map tcmalloc에 이어 google 라이브러리가로 Hash Map을 사용할 때의 고속화이다. 아래 링크에 다양한 Hash Map을 이용했을 때의 벤치...
더 읽기

C++ - JSON for Modern C++ 이 버전 3.1로

원문 JSON for Modern C ++ 3.1 에서는 Universal Binary JSON(UBJSON) 기능 지원 및 JSON Merge Patch가 새롭게 추가 되었다. UBJSON는 JSON for Modern C++에서 지원하는 여러 가지 형식의 하나로, 인코딩 크기 감소 및 디코딩 속도를 목적으로 한다. UBJSON 외에는...
더 읽기

GPU를 타깃으로 한 C# 이용

원문 NVIDIA GPU를 이용하는 범용 프로그램을 만드는 것은 오랫동안 NVIDIA의 CUDA 플랫폼을 사용하는 것을 의미하고 있었다. CUDA는 몇몇 다른 프로그래밍 언어를 지원하고 있지만 고성능 코드를 기술하려면 보통 C 또는 C++ 이 필요했다. 최근까지 이 상황에 의해서 C# 개발자는 고립되고 있으며...
더 읽기

golang - The Go Playground에서 유닛테스트 하기

Go는 온라인 상에서 코드를 실행 해 볼 수 있다. The Go Playground The Go Playground에서는 유닛테스트 코드도 실행 할 수 있다. package main import "testing" func Hello(name string) string { return "Hello, Emacs!" } func TestHello(t *testing.T) { if Hello("Vim")...
더 읽기

C#에서 LZ4로 압축한 데이터를 다른 언어와 주고 받을 때

C#에서 LZ4 압축 라이브러리로 유명한 것으로 lz4net 이라는 것이 있음. 이 라이브러리를 사용하여 압축을 한 데이터를 python에서 압축을 풀 때 압축이 제대로 풀리지 않음. (파이썬에서는 python-lz4 사용. ) 이유는 lz4 라이브러리를 사용할 때 Frame Format나 Block Format을 사용하는데 타 언어와...
더 읽기

golang - 길이가 0인 slice는 nil로

출처 package main import ( "fmt" ) func testNil(p []byte) { fmt.Printf("p: %v\n", p) fmt.Printf("len(p): %d\n", len(p)) fmt.Printf("cap(p): %d\n", cap(p)) for i := range p { fmt.Println("NG: %d\n", i) } fmt.Printf("p[:]: %v\n", p[:]) fmt.Printf("append(p, 0): %v\n", append(p, 0)) } func...
더 읽기