0

私はパターンマイニングアルゴリズムを実装しており、通常、入力データは次の形式のファイルです

item1 item2 item3
item0 item3 item10
....
item30 item40 item30

通常itemxは ですStringByteString効率的にするために、以前はデフォルトよりも高速なファイルを読み取っていましたString。パターン マイニング アルゴリズムの重要なタスクは、アイテム セット間の比較です。Intを比較するのではなく、 を比較するために入力ファイル形式を変更すると、プログラムの速度がどのくらい速くなったり遅くなったりするのでしょうかByteString。これが小説のフォーマットです:

1 2 3
0 3 10
....
30 40 30

ありがとう !

4

1 に答える 1

3

eqInt#Int の等価関数(primopによって指定) がバイト文字列の等価関数よりも高速かどうかを尋ねるだけに制限する場合は、次のようになります。

primop   IntEqOp  "==#"   Compare
   Int# -> Int# -> Bool
   with commutable = True

eq :: ByteString -> ByteString -> Bool
eq a@(PS fp off len) b@(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 #-}

次に、Int ケースの方が高速になります。間違いない。

ただし、最初にバイト文字列入力 (または文字列入力) をIntトークンに解析する必要がある場合は、負ける可能性があります。

ここを本当に知る唯一の方法は、測定することです。

于 2013-01-02T12:51:51.300 に答える