예전에 님프 코드 좀 봤는데
g_hash_table_iter_init (&iter, server->priv->services);
while (g_hash_table_iter_next (&iter, NULL, &service))
{
if (!g_strcmp0 (server->priv->last_focused_service,
nimf_service_get_id (service)))
nimf_service_change_engine_by_id (service, engine_id);
}
이 부분 있는데 서비스 ID 를 키로 쓰는데 특정 ID 가진 서비스 찾으려고 while 문 전체 비교하는데
해시 테이블 자체가 O(1) 룩업해서 한줄로 쓸 수 있고
왜 sort 안에서
static gint
on_comparison (gconstpointer engine_id_a, gconstpointer engine_id_b)
{
...
settings_a = g_settings_new (schema_id_a);
settings_b = g_settings_new (schema_id_b);
schema_name_a = g_settings_get_string (settings_a, "hidden-schema-name");
...
g_object_unref (settings_a);
}
객체 생성을 하는지
그리고 싱글톤 패턴내에도 댕글링 포인터가 있고
그래서 뭐 잘치는지는 모르겠음
C를 잘쓴다면 이해를 하겠는데, 그냥 저냥 보이는 아마추어 코드라.
해당 댓글은 삭제되었습니다.
@나르시 그래서 해시테이블 전체를 매번 순회하면서 문자열 비교하는게 너는 맞다 생각함?
해당 댓글은 삭제되었습니다.
그 버그가 있는게 문제가 아니라 정렬 알고리즘 자체를 이상하게 쓰고 있다고 임마
@나르시 그건 안중요하고 내부의 비교 알고리즘이 이상하다고 어느 미친놈이 해시테이블 전체 순회를 해
@나르시 뭔 이해를 못해 요새 누가 저렇게 하냐고
@나르시 그런 화면 표시랑 백 구분을 못하노. 갑갑하다.
@나르시 애초에 히팅을 더 빠르게 할 수 있는데 왜 순회를 하냐니까
그냥 서로 무시하고 좋게 가자. 오늘 왜 며칠 반응 안해주니 자꾸 내 글에 댓글달아 좆빡치게