Performance and Profiling help

C

Chun

Hello,

I've written a dll and compiled with gcc in mingw environment. Running
the profiling on it I get the following output (extract). My question
is what is the first entry that is taking 47% of the time?

void std::__uninitialized_fill_n_aux<fieldptr*, unsigned int,
fieldptr>(fieldptr*, unsignd int, fieldptr const&, std::__false_type)

Any pointers on how to reduce this time? I'm guessing it has something
to do with templates and gcc. Is there a alternative std C++ library
which does this quicker? - which has support on mingw and linux.

$ gprof ama.dll gmon.out -p
Flat profile:

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
43.07 0.59 0.59 78552 0.01 0.01 void
std::__uninitialized_fill_n_aux<fieldptr*, unsigned int,
fieldptr>(fieldptr*, unsignd int, fieldptr const&, std::__false_type)
7.30 0.69 0.10 279600 0.00 0.00 Ama_ExtractField
6.57 0.78 0.09
_Unwind_SjLj_Register
5.84 0.86 0.08
_Unwind_SjLj_Unregister
5.11 0.93 0.07
std::string::append(char const*, unsigned int)
3.65 0.98 0.05
std::num_put<char, std::eek:streambuf_iterator<char,
std::char_traits<char> > >::do_put(std:eek:streambuf_iterator<char,
std::char_traits<char> >, std::ios_base&, char, unsigned long) const
3.65 1.03 0.05
::basic_string(std:string const&)
2.92 1.07 0.04 585792 0.00 0.00
std::allocator<char> > said:
(std::basic_string<char, std::char_traits<char>, std::allocator<char>
const&, char const*)
2.92 1.11 0.04
std::string::assign(std::string const&)
2.92 1.15 0.04 operator
new(unsigned int)
2.19 1.18 0.03 78552 0.00 0.01
ama::addfields(int)
2.19 1.21 0.03 Ama_CmdGetRec
2.19 1.24 0.03
std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned int)
1.46 1.26 0.02 78552 0.00 0.01
std::vector said:
::_M_fill_assign(unsigned int, fieldptr cnst&)
1.46 1.28 0.02
std::string::_Rep::_M_destroy(std::allocator<char> const&)
1.46 1.30 0.02
std::string::reserve(unsigned int)
1.46 1.32 0.02
std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::flush()

Michael
 
E

Erik Wikström

Hello,

I've written a dll and compiled with gcc in mingw environment. Running
the profiling on it I get the following output (extract). My question
is what is the first entry that is taking 47% of the time?

void std::__uninitialized_fill_n_aux<fieldptr*, unsigned int,
fieldptr>(fieldptr*, unsignd int, fieldptr const&, std::__false_type)

Any pointers on how to reduce this time? I'm guessing it has something
to do with templates and gcc. Is there a alternative std C++ library
which does this quicker? - which has support on mingw and linux.

This if off-topic by the way. You are looking at the wrong values, the
ones you should be interested in are those in cumulative column, the
function you listed (__uninitialized_fill_n_aux) is just a helper
function used by the some standard library functions. What you should be
looking for is those functions that you call in your code, then try to
figure out a way to do the same thing with smarter usages of the same or
other functions.
 
M

Michael

This if off-topic by the way. You are looking at the wrong values, the
ones you should be interested in are those in cumulative column, the
function you listed (__uninitialized_fill_n_aux) is just a helper
function used by the some standard library functions. What you should be
looking for is those functions that you call in your code, then try to
figure out a way to do the same thing with smarter usages of the same or
other functions.

Thanks Erik. Do you know which group this question belongs to?

Michael
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,705
Latest member
Stefkari24

Latest Threads

Top