Please find attached a Delphi class called TIgnoreList and a Tester application for it. TIgnoreList is a simple class that allows you to define a set of search words and then ask if any given data (string) contains any of these search words. The matching is case insensitive and partial (e.g. search word "foo" will match to both data "foo" and "foobar").
Your job is to make TIgnoreList faster. As fast as possible.
I will pay you according to your performance. With your bid, you must give me an estimate of how much you can speed up the Tester app in per cent. I will pay you accordingly, after the job is complete. For example, if you make a bid of $100 and say you can improve the speed by 50%, I will pay you $100 if, after your modifications, the Tester app runs in my computer 50 % faster. If you only manage to improve the speed by 20 %, I will only pay you 20 % of your bid (0.2 x $100 = $20). However, if you manage to improve the speed more than you estimated, for example 70% instead of promised 50%, I will pay you $100 + (70%-50%) = $120. In other words, the faster you get the code, the more you'll earn. Also included in the zip is Profile_REF.txt. It contains the runtime data of the Tester app in my computer, it contains the numbers for you to beat.
Here are the rules: You are allowed to modify all files, except [url removed, login to view] and miniprof.pas. You cannot remove any features of the TIgnoreList class. You cannot use any proprietary code or assemply code. You must not increase the memory footprint (amount of memory used) of the code by more than 4 fold. That is, running your code must not use over 4 times of memory compared to the original code.
If in the process of optimization you find bugs or other room for improvement, let me know and we can discuss if I want to pay you extra for the fixes.
Only make a bid if you can start the work today.
With your bid, give me your estimate of how much faster you can make the code, as it will be used to calculate your final pay.