This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Performance Gcc 3.3.1 VS 2.95.1
- From: Joe Buck <Joe dot Buck at synopsys dot COM>
- To: "Yingqi(Richard) XIAO" <xiaoyq at cs dot uchicago dot edu>
- Cc: gcc at gnu dot org
- Date: Tue, 26 Oct 2004 21:10:01 -0700
- Subject: Re: Performance Gcc 3.3.1 VS 2.95.1
- References: <Pine.LNX.4.58.0410261737500.17158@gimmick.cs.uchicago.edu>
On Tue, Oct 26, 2004 at 05:46:26PM -0500, Yingqi(Richard) XIAO wrote:
> I upgraded one of my gcc from 2.95.1 to gcc 3.3.1 month ago. But now I
> found the performance of compiled code is worse than before. It is worse
> even with optimization than compiled with 2.95.1 without optimization. For
> example,
>
> for (i = 0; i < n; i++)
> {
> capacity += 6;
> str.reserve(capacity);
> str += "hello\n";
> }
> This program will make significant different performance. Could you give
> me some explaination? Thanks.
Ouch! By manipulating the capacity in that way, you force quadratic
performance! The string has to be reallocated every time. Take out
your explicit management of capacity and things will get much faster.
(I use a question related to this example as an interview question, to
see if the candidate understands performance issues).
If 2.95.1 ran this code faster, I assume it must have ignored your
calls to reserve().