[Haskell-cafe] Optimizing a title matcher

Lyle Kopnicky lists at qseep.net
Wed Sep 27 00:25:45 EDT 2006


Bertram Felgenhauer wrote:
> Lyle Kopnicky wrote:
>   
> [snip]
>   
>> listRecords :: AbsString s => TextTable s -> IO [TextRecord s]
>> listRecords (TextTable fields _ records) = do
>>   keyRecs <- HT.toList records
>>   return $ map (fromList . zip fields . elems . snd) keyRecs
>>     
>
> Doing fromList again and again can't be good. Why don't you make
> tableFields a map that maps names to array indices? Then you can just
> pass the bare arrays along, and the later lookups will be cheaper, too.
>   
That might make a difference. It does spoil the interface a bit, since 
now the caller has to look up a field name to get an index, then use 
that to look up a value, instead of just using the field name to get the 
value.
> Now due to lazyness this will probably be evaluated in matchscore,
> because before that the resulting Map isn't used. Which is exactly where
> you said a lot (most?) of the time is spent.
>   
Yes, likely. I had to run on a small pair of files in order to get the 
profiling to work. So, probably more time was spent in matchScore than 
it admitted. (The overhead of the initial read would decrease as the 
table size increases.)
> Another thing is that you should compile your code with -O, but I guess
> you are already doing that.
>
>   
Yep. Thanks.

- Lyle
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20060926/f216af34/attachment.htm


More information about the Haskell-Cafe mailing list