Solved

STL performance problem

Posted on 2000-04-12
5
197 Views
Last Modified: 2010-04-10
 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
Comment
Question by:pgau061099
5 Comments
 
LVL 23

Expert Comment

by:chensu
ID: 2709974
You need to optimize your algorithm.
0
 
LVL 22

Expert Comment

by:nietod
ID: 2710119
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
 
LVL 5

Accepted Solution

by:
proskig earned 100 total points
ID: 2710877
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
 

Author Comment

by:pgau061099
ID: 2711904
Thanks for the help.
0
 
LVL 22

Expert Comment

by:nietod
ID: 2711984
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

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now