Improve speed of non visual string storage component
$30-250 USD
Completed
Posted about 2 years ago
$30-250 USD
Paid on delivery
Attached is sample project with a reference implementation of TFixedStringStorageRef. It is a non visual component used to store a rather large set of strings (about 150 KB of data), optimized for searching. The searching is case insensitive, full match (i.e. no partial matching) search. The data set is fixed, that is, the component does not need to support removing data from the structure.
Basically, it implements a faster version of:
Data := [login to view URL];
[login to view URL](some_data);
[login to view URL]();
If [login to view URL]('something') > -1 then ...
Your job is to implement with Delphi 11 or compatible, TFixedStringStorage as a faster implementation of TFixedStringStorageRef in a way it does not use more than 50% more RAM than the current implementation. The current implementation is done using TDictionary<String,Boolean> where the Boolean data is not even used.
The faster implementation should either be a binary search tree of some kind, or some kind of hashed list where you can take advantage of serializing the data from disk (i.e. save the hash values to disk during serialization instead of calculating them all each time).
The code must not rely on any third party code and must be 100% pure Delphi/Pascal code.
I've done an implementation that is 15% faster (at least) and it uses less memory (measured with FastMM4).
It's 100% pascal BUT it relies on an Open Source library.
An averege of executing your test (clicking start button) 500 times gives following results on a Intel Core i7-4790 CPU @ 3.60GHz
Win64 build: 37% better performance (average) with 42% less memory usage
Win32 build: 33% better performance (average) with 36% less memory usage
Regards,
$110 USD in 1 day
0.0 (0 reviews)
0.0
0.0
5 freelancers are bidding on average $118 USD for this job
I am very interested in your little project.
Delphi is a bit slow with with string handling and searches, so it is an interesting project!
Otherwise I could start on your project this Friday!
Kind regards
Niels Maschmeyer
Hello, I've been a delphi programmer for over 9 years, I don't have a solution ready to hand to you, but if you want we can discuss some implementation possibilities (I have some cards up my sleeve), and I would charge for my time spent, it may or may not work out but you authorize the implementation before starting. If you want, we can work on something under these conditions.
Get in touch
Delphi expert
I am not going to bid BUTTTTTTTTT
Both on my computer !!!!!!!!!!!!!!!!!!!!
your exe
Reference solution time: 5132 msec
New solution time: 5476 msec
MY COMPILATION same software nothing changed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
my exe
Reference solution time: 578 msec
New solution time: 546 msec