2011-03-04 6 views
-1

.net에서 일반적으로 System 네임 스페이스의 함수 호출이 일반 함수 호출보다 훨씬 느립니 까? 일반적인 사실로, "시스템 호출이 느립니다." 그러나이 경우 시스템 호출이 아닌 "시스템"네임 스페이스 호출에 관심이 있습니다..net 시스템 호출 성능

예를 들어, 내가 10000 개의 문장으로 구성된 배열을 생각해보십시오. 그 중 어떤 단어가 "컴퓨터"라는 단어로 시작하는지 파악하고 싶습니다. System.Text.RegularExpressions 네임 스페이스에 10000 건의 호출을하는 것이 더 낫지 않습니까? 아니면은

StartsWithPrefix(ByVal prefix as String, ByVal str as String) As Boolean

기능을 구현하기 위해 훨씬 더 나은 것입니까?

부여 된 정규 표현식 자체는 느리지 만 내 질문은 여전히 ​​의미가 있다고 생각합니다.

+0

다른 시나리오에 대한 성능 테스트 결과는 무엇입니까? 그러므로 측정하고 빨리 선택하십시오 : –

+0

"일반적인 사실"은 어디서 얻습니까? 'System' 네임 스페이스의 코드는 다른 곳의 코드보다 속도가 느립니다. 그리고 궁극적으로'string.StartsWith' 나 regexes와 같은'System' 메쏘드를 사용하지 않고 어떻게 여러분 자신의'StartsWithPrefix' 메쏘드 *를 구현할 수 있을까요? –

답변

1

아니요, 시스템 네임 스페이스의 유형이 느려지는 유형의 메소드 호출에 대한 구체적인 것은 없습니다. 당신이 "컴퓨터"로 시작하는 문자열을 찾으려면

, 나는 당신이 정렬 접두사 비교 당신이 비록 원하는 것을 고려해야한다

if (foo.StartsWith("computer")) 

사용하는 것 - 예를 들어, 당신이 사용하는 경우 :

if (foo.StartsWith("computer", StringComparison.Ordinal)) 

훨씬 빠르지 만 문화적으로 민감하지 않을 수 있습니다. 나는 당신의 특정한 경우에 중요한지 여부를 모르지만 그것에 대해 생각해야합니다.

2

아니요. System.xxx 네임 스페이스는 네임 스페이스 일뿐입니다.

'시스템 호출 속도가 느림'은 "권한이없는 사용자 모드 코드에서 권한있는 운영 체제 코드로의 호출이 운영 체제의 권한있는 부분 안팎으로 들어가는 데 상당한 오버 헤드가 발생합니다."

"함수 이름에 'system'이라는 단어를 사용하면 더 느리게 실행됩니다."

0

System 네임 스페이스의 코드는 다른 네임 스페이스와 동일한 코드입니다. 네임 스페이스는 코드의 특성이나 성능에 영향을주지 않습니다. 그리고 System 네임 스페이스의 대부분은 OS 또는 그와 비슷한 것을 호출 할 필요가 없습니다. 그것은 단지 많은 유틸리티 클래스 일뿐입니다. 런타임 라이브러리.

문자열이 주어진 접두어로 시작하는지 알려면 String.StartsWidth 메서드를 사용할 수 있습니다.