많은 계산을 수행하고 가장 안쪽 루프를 최적화하려고하는 프로그램을 마치고 있습니다.VB.NET에서는 최적의 성능을 위해 정수를 반환하므로 두 문자를 사용할 때 사용할 데이터 구조는 무엇입니까?
현재 계산 중 많은 수의 단어 쌍을 반복 계산하고 해당하는 문자 쌍 수의 테이블을 만듭니다. (
voice
louse
및 문자 쌍은 (V, l) (O, O)을 (I, U)를, (C, S), 그리고 것이다 : 예를 들어, 단어 한 쌍 수도 e, e)이 쌍들은 모두 1의 카운트를 갖는다. 조합 (v, l)이 다른 단어에서 다시 만나면, 그 카운트를 2로 증가시킬 것이다.
최고의 성능을 위해 어떤 데이터 구조를 사용해야합니까? 두 개의 문자가 주어지면 그 쌍의 수를 가져와야합니다. 같은 현재 내가 누구 선언 중첩 된 해시 테이블을 사용하고하는 모습이 데이터 구조를 사용
Dim data As New Dictionary(of String, Dictionary(of String, Integer))
, 프로그램은 검색 모든 정수 두 문자열을 해시해야합니다. 모든 문자 쌍에 대해 먼저 쌍이 해시 테이블에 있는지 확인하고 추가하지 않으면 추가 해시가 두 개 필요합니다. 또한 키가 "="vl "이고 값이 1 인 두 문자가 연결된 한 레벨 해시 테이블을 고려했습니다. 그러나이 문자열 연결은 VB에서 상대적으로 느립니다.
그럼, 내 질문은 : 어떻게 빠른 VB에서 사전
입니까? 4 개의 해시가 하나의 해시 및 문자열 연결 (두 수준 대 한 수준 해시 표)보다 빠릅니까?
빠른 추가 및 검색을 허용하는 이러한 종류의 데이터를 저장하는 더 나은 구조를 생각할 수 있습니까?
'희미한 조합 (ASCW (char1을) << 16) 또는 ASCW (char2)는' – jeroenh
@jeroenh : 감사합니다, 나는 그에서 편집했습니다. –
우수! 이렇게하면 계산 속도가 약 3 배 빨라집니다. – davidscolgan