Span 이용에 따른 최적화

출처 힙 사용량 절감 Span 를 사용하면 빠르게 되는 이유는 간단하게 힙 사용량을 줄아가 때문이다. string.Substring 등으로 새로운 문자열을 만들어 않아도 된다. stackallock욿 임시 버퍼에 힙을 사용하지 않는다 네이티브 메모리를 직접 읽을 수 있게함으로써 관리되는 배열에 복사하지 않는다 모두 unsafe...
더 읽기

WCF - Tips

클라이언트가 요청 데이터를 null로 보내는 경우 대처 클라이언트에서 public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData)을 요청한 경우 reqData을 null로 보낼 수 있음(악의적인 이유로). 그래서 아래처럼 요청 데이터를 null 조사를 해야한다. public class ServerService : IServerService { public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData) { if (reqData...
더 읽기

WCF - TCP Sample

서버 WCF LIB namespace WCFServerLib { public interface IClientCallback { [OperationContract(IsOneWay = true)] void SendMessageToClient(string message); } } namespace WCFServerLib { [ServiceContract(CallbackContract = typeof(IClientCallback))] public interface IServerService { [OperationContract(IsOneWay = true)] void RegistClinet(string id); [OperationContract] void TestUserData(RequestEcho reqEcho); [OperationContract] string...
더 읽기

WCF - AsyncAwait

예제 코드 [ServiceContract] public interface IServerService { [OperationContract] Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData); } // http://localhost:15501/GameService/RequestUserLogin [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "RequestUserLogin")] public async Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData) { try { var result = await ReqLogin.ProcessAsync(reqData); return...
더 읽기

WCF - RESTful API

RESTful 서비스 URI나 표준 동사(POST, GET, PUT, DELETE) 등 HTTP 사양을 강하게 의식한 리소스 베이스의 접근을 제공. 최신의 프레임워크는 대 부분 RESTful 서비스를 만들 수 있는 기능 지원. WCF의 REST 서비스에서는 POX (Plan XML 형식), AJAX 애플리케이션 등에서 사용 되는...
더 읽기

golang - 스택과 힙에 대해

실행 시 동적으로 메모리를 확보하는 영역으로서 스택과 힙이 있다. 스택 메모리는 함수 호출 스택을 저장하고 로컬 변수, 인수, 반환 값도 여기에 둔다. 스택의 Push와 Pop은 고속이므로 객체를 스택 메모리에 저장하는 비용은 작다. 단 함수를 나오면 스택이 Pop 되어 해제되므로 함수의...
더 읽기

golang - OOP 프로그래밍 하기

캡슐화 Go에서는 구조체와 해당 필드, 함수, 메소드의 범위는 이름의 선두가 대문자, 소문자로 결정된다. 대문자이면 public, 소문자라면 같은 패키지 내로 닫힌 범위로. 그러므로 아래와 같이 쓰는 것으로 캡슐화를 실현할 수 있다. //human.go package class type Human struct { // 필드 이름을...
더 읽기

golang - go로 쓴 코드의 힙 할당 여부 확인하는 방법

출처 서두 Allocation Efficiency in High-Performance Go Services · Segment Blog 라는 기사를 읽었다. 좋기 때문에 꼭 일독을 권장한다. 이 글은 나의 이해와 실제로 시험해 본 결과의 메모이다. 가장 중요한 포인트는 go build -gcflags ‘-m’ 같이 옵션을 지정하여 빌드하면 코드의...
더 읽기

golang - 성능 튜닝하기

대전제 프로파일링을 취한 뒤 어떻게 최적화 할 것인가에 대한 이야기 추측하지말고 계측하라 알고리즘이나 데이터 구조는 최적인 것을 선택하고 있다고 가정. 손 재주로 최적화하는 것보다 알고리즘 자체를 바꾸는 쪽이 압도적으로 좋아진다. 이 기사의 각 벤치 마크는 Go 1.4(go version go1.4 linux/amd64)에서...
더 읽기