string sVar = "abcdefghijklmnopqr";


idx = sVar.IndexOf('p', 0);                // 1

idx = sVar.IndexOf("p", 0);               // 2

idx = Strings.InStr(1, sVar, "p");         // 3



위 구문을 각각 시간 측정 해봤다.

100만회씩 돌렸는데,

나는 순서대로 속도가 빠를거라 생각했다.(당연히 첫줄 1번부터)

그런데 속도는 1,3,2 순으로 나옴. 그것도 2번이 X같이 느림.

(물론 정확하게 저 3개 구문 중 1개씩만 for 루프에 넣었음)


일단 1번은 예상대로 빠르고, 0.033초 나옴.

2번은 ㅅㅂ 1.200초 나옴.

3번은 0.100 ~ 0.200 초 로 왔다갔다함.


이번엔 두 글자 해봤다.


idx = sVar.IndexOfAny(new char[] { 'p', 'q' }, 0);  // 4

idx = sVar.IndexOf("pq", 0);                          // 5

idx = Strings.InStr(1, sVar, "pq");                    // 6



5번은 그대로 1.200초

4,6번은 비슷하게 0.200초 정도.



C# 이런거 많더라.

뭘 해도 무조건 비베보다 빠를거라 착각들 하던데,

저것만봐도 일부는 케바케임. ㅅㅂ 그것도 모르고 더 느린거 쳐 쓰고 있었네. ㅂㄷㅂㄷ

(참, InStr은 using Microsoft.VisualBasic; 써야하고, 참조도 추가해야하고, 첫번째 인덱스가 1번임. IndexOf는 0이고.)



근데 C#은 IndexOf 말고 InStr 같은거 없냐?

InStr 보다 느리다니 너무 충격이다.

빠른거 없음?