나는 패턴 마이닝 알고리즘을 구현하고있어, 일반적으로 입력 데이터는 일반적으로 itemx
가 String
입니다 다음과 같은 형식Haskell에서 ByteString 비교보다 Int 비교가 얼마나 빠릅니까?
item1 item2 item3
item0 item3 item10
....
item30 item40 item30
을 가진 파일입니다. 효율적으로하기 위해 String
보다 빠른 ByteString
으로 파일을 읽었습니다. 패턴 마이닝 알고리즘의 훌륭한 작업은 항목 세트 간의 비교이기 때문에. 나는 ByteString
을 비교하는 대신에 Int
을 비교하기 위해 입력 파일 형식을 변경하면 얼마나 빨리 또는 더 느리게 내 프로그램이 될지 궁금합니다. 다음은 새로운 형식입니다.
1 2 3
0 3 10
....
30 40 30
감사합니다! eqInt#
primop에 의해 주어진 - - 그런 다음
primop IntEqOp "==#" Compare
Int# -> Int# -> Bool
with commutable = True
eq :: ByteString -> ByteString -> Bool
eq [email protected](PS fp off len) [email protected](PS fp' off' len')
| len /= len' = False -- short cut on length
| fp == fp' && off == off' = True -- short cut for the same string
| otherwise = compareBytes a b == EQ
{-# INLINE eq #-}
대 - bytestrings의 평등 기능보다 빠른
당신은 훌륭한 [criterion library] (http://hackage.haskell.org/package/criterion)에 익숙합니까? 유스 케이스를 나타내는 몇 가지 빠른 벤치 마크를 제안하고 자신의 질문에 답변하십시오. – jberryman
또는 더 나은 방법은 텍스트 기반 파일 형식을 사용하지 않고 X 비트 단어 세트를 저장하는 것입니다. 그들. –