버그 해결을 위한 모든 질문을 던져
0 votes
255 views

https://stackoverflow.com/questions/141088/what-is-the-best-way-to-iterate-over-a-dictionary

저는 기본적으로는 keys 돌리고 [] 씌어서 쓰고  양쪽이 다 필요한경우에만 KeyValuePair 쓰네요

(습관때문인지 이쪽 표기가 눈에 편하기도 하고 루프안의 에서 스코프 로컬 변수로 한번 복사해서 쓰기때문에 타이핑도 눈꼽만큼 덜해도되고)

라고 생각했는데

public static string Normal(Dictionary<string, string> dictionary)
{
    string value;
    int count = 0;
    foreach (var kvp in dictionary)
    {
        value = kvp.Value;
        count++;
    }

    return "Normal";
}
public static string Keys(Dictionary<string, string> dictionary)
{
    string value;
    int count = 0;
    foreach (var key in dictionary.Keys)
    {
        value = dictionary[key];
        count++;
    }

    return "Keys";
}

With this example the normal foreach test took 0.0310062 and the keys version took 0.2205441. Loading all the keys and iterating over all the lookups is clearly a LOT slower!

키로 돌면서 값을 봐야하는경우 [] 에서 탐색 비용이 매번 발생하기때문에 무겁긴 하네요

asked (347 point) , 255 views
맨위 리플 말마따나 이 질문이 왜 2000따봉이나 되는지는 좀 의아하긴합니다

1 답변

+2 votes
다만 value를 참고할 필요없이 key만 봐도 되면 .Keys 로 하는 편이 좋습니다.
answered (122 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

184 질문
286 answers
311 댓글
304 users