Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 250
  • Last Modified:

STL performance problem

 I am implementing a approximate string matching algorithm. First I did that in Java and the response time was not good enough to the amount of information I am dealing with. So, I took a C++ compiler - MS VC++ - and ported the application. It uses a lot of <map>, <set>, <list> and <pair> objects and is intrisic slow.
  To my surprise the C++ version was even slower; 10 times slower, actually. Even considering this is my first "real world" try with C++, I could not imagine that result. Is the STL really that slow when the objects mentioned before are used? Is there any STL high performance implementation availiable?

             Thanks in advance,

               Paulo Urbano.
0
pgau061099
Asked:
pgau061099
1 Solution
 
chensuCommented:
You need to optimize your algorithm.
0
 
nietodCommented:
The VC STL is probably one of the best in terms of speed.  It is written by P.J. Plauger who is just about THE recognized authority on the subject.   Most likely the problem is in your algorithm, not in the STL.

Your best bet is to profile the algorithm  (VC has a decent profiler) and look for bottlenecks.  Try to optimize those.   Although it is possible that the best bet is to redesign from scratch, rather than try to remove the bottlenecks.

We can't tell you much more than that, since we don't know wnything about your code.
0
 
proskigCommented:
The was an article in C/C++ Users Journal comparing pure C functions with std::string. Final result was that STL degrades perfomance. The results were different for different compilers and STL implementations. E.g. for one compiler final code took 20.36 seconds while initial (pure C without C++) took only 8.40. But it was mentioned that there are many things to improve how do you use STL. For example using string::compare instead of <,> leaded to avg. 10% increase of performance.
0
 
pgau061099Author Commented:
Thanks for the help.
0
 
nietodCommented:
Those sorts of analyisis are very very missleading.  It depends intirely on the algorithm.   You can easily construct algorithms where the stl class will be better (because of its lazy I/O optimization.)   In any case, java uses a reference counted string class that is very similar to the STL string class in VC 6.  (The next VC STL string class won't be reference counted and will supposidly be much faster.)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now