Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

이때는 바이블처럼 메모리누수없는 성능좋은 자료구조를 개발자들이 구현가능했어야 하는 시점이다.

서비스 로직보다. 우리가 작성한 리스트 내부를 더 많이 하든 그런 시절이였다자신이 작성한 자료구조가 얼마나 더 빠른고 안전한지에대해 더 열정을 퍼 붓던 시절이다.

Code Block
languagecpp
themeEmacs
#include <iostream>

struct Node{

    Node* prev;
    Node* next;

    void* data;
};

struct List{
    Node* head;
};

List* createList(){

    Node* head = new Node;
    head->prev = head;
    head->next = head;
    head->data = 0;

    List* list = new List;
    list->head = head;

    return list;
}

void insertNodeAfter(Node* node, void* data){
    
    Node* before = node;
    Node* after = node->next;

    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = after;
    newNode->prev = before;

    after->prev = newNode;
    before->next = newNode;
}

void removeNode(Node* node, bool deleteData){

    Node* before = node->prev;
    Node* after = node->next;

    before->next = after;
    after->prev = before;

    if (deleteData)
        delete node->data;
    delete node;
}
............................................ 이하생략 이만큼의 코드로도 리스트가 제대로 작동하지않는다.

...

Code Block
languagec#
themeEmacs

List<Person> persons = new List<Person>()
{
    new Person { PersonId = 1, car = "Ferrari" },
    new Person { PersonId = 1, car = "BMW" },
    new Person { PersonId = 2, car = "Audi"}
};


List<Result> results2 = persons
    .GroupBy(p => p.PersonId, 
             (k, c) => new Result()
                     {
                         PersonId = k,
                         Cars = c.Select(cs => cs.car).ToList()
                     }
            ).ToList();

...

여전히 아주 어려운 일이다. 오랜동안 유지한 팀이 오랫동안 노력해야만 얻을수 있고 그만큼 성능및 퍼포먼스가 나올수 있는 부분이다.

 


최근에는 자료구조가아닌 마이크로 웹 서비스를 위한 조금더 큰 덩치의 어플리케이션 구성에 고민을 하고 있으며

...

없기때문에 메니져드 언어 ( 스프링이나, ASP.net을 활용하기위해) 로 전향을 하였으며 


다음 주제에 대해 지속적인 연구 활동을 하고 있다.

...