0

我正在实现模式挖掘算法,通常输入数据是具有以下格式的文件

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

通常itemx是一个String。为了提高效率,我曾经读取ByteString比默认文件更快的文件String。由于模式挖掘算法的主要任务是项目集之间的比较。我想知道如果我更改输入文件格式以便进行比较Int而不是比较ByteString. 这是新颖的格式:

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

谢谢 !

4

1 回答 1

3

如果您限制自己只询问 Int 上的相等函数 - 由eqInt#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 回答