By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,960 Members | 1,142 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,960 IT Pros & Developers. It's quick & easy.

Benchmarking program to test C++ functions?

P: n/a
I have written two different insert functions in a C++ program and would
like to test the difference in performance.

Can you recommend any benchmarking software for C++ functions that can
do this job? I am working under linux/ubuntu.
Jun 13 '07 #1
Share this Question
Share on Google+
7 Replies


P: n/a
desktop wrote:
I have written two different insert functions in a C++ program and would
like to test the difference in performance.

Can you recommend any benchmarking software for C++ functions that can
do this job? I am working under linux/ubuntu.
time(1)?

--
Ian Collins.
Jun 13 '07 #2

P: n/a
Ian Collins wrote:
desktop wrote:
>I have written two different insert functions in a C++ program and would
like to test the difference in performance.

Can you recommend any benchmarking software for C++ functions that can
do this job? I am working under linux/ubuntu.

time(1)?
I was thinking something with a GUI interface and the option to do plots.
Jun 13 '07 #3

P: n/a
"desktop" <ff*@sss.comwrote in message
news:f4**********@news.net.uni-c.dk...
>I have written two different insert functions in a C++ program and would
like to test the difference in performance.

Can you recommend any benchmarking software for C++ functions that can do
this job? I am working under linux/ubuntu.
I just use clock. such as:

clock_t Start = clock();
// Map find is so fast one search reports 0ns
for ( int i = 0; i < 1000; ++i )
FindInMap( "Bogus", "Bogus", MapData );
clock_t End = clock();
std::cout << "Search for non existant entry in Map: " <<
static_cast<double>( End - Start ) / 1000.0 << "ns\n";

You would need to include <ctime>

I am not sure if it's supposed to be std::clock or not (not using namespace
std, yet it finds it anyway in windows).
Jun 13 '07 #4

P: n/a
desktop wrote:
Can you recommend any benchmarking software for C++ functions that can
do this job? I am working under linux/ubuntu.
Take a look at cachegrind and it's KDE frontend kcachegrind. It uses
valgrind and it's readily available from the Ubuntu repositories.
Hope this helps
Rui Maciel
Jun 13 '07 #5

P: n/a
On 13 Jun, 10:25, "Jim Langston" <tazmas...@rocketmail.comwrote:
"desktop" <f...@sss.comwrote in message

news:f4**********@news.net.uni-c.dk...
I have written two different insert functions in a C++ program and would
like to test the difference in performance.
Can you recommend any benchmarking software for C++ functions that can do
this job? I am working under linux/ubuntu.

I just use clock. such as:

clock_t Start = clock();
// Map find is so fast one search reports 0ns
for ( int i = 0; i < 1000; ++i )
FindInMap( "Bogus", "Bogus", MapData );
clock_t End = clock();
std::cout << "Search for non existant entry in Map: " <<
static_cast<double>( End - Start ) / 1000.0 << "ns\n";

You would need to include <ctime>

I am not sure if it's supposed to be std::clock or not
Yes it is, if you get it by including <ctime>. <ctimeshould not give
you ::clock. If you include <time.hyou are supposed to get ::clock
and std::clock.
(not using namespace
std, yet it finds it anyway in windows).
Doesn't surprise me. A lot of popular implementations seem to get this
wrong and so formally incorrect code like yours above successfully
compiles.

I've found the problem widespread enough to not bother with <cxxx>
headers. YMMV.

Gavin Deane

Jun 13 '07 #6

P: n/a
desktop wrote:
Ian Collins wrote:
>desktop wrote:
>>I have written two different insert functions in a C++ program and would
like to test the difference in performance.

Can you recommend any benchmarking software for C++ functions that can
do this job? I am working under linux/ubuntu.

time(1)?

I was thinking something with a GUI interface and the option to do plots.
I don't know which plots may you be interested in, but you are probably
looking for a profiler. Check out gprof and kprof.

Regards,

Zeppe
Jun 13 '07 #7

P: n/a
On Jun 13, 11:25 am, "Jim Langston" <tazmas...@rocketmail.comwrote:
"desktop" <f...@sss.comwrote in message
news:f4**********@news.net.uni-c.dk...
I have written two different insert functions in a C++ program and would
like to test the difference in performance.
Can you recommend any benchmarking software for C++ functions that can do
this job? I am working under linux/ubuntu.
I just use clock. such as:
clock_t Start = clock();
// Map find is so fast one search reports 0ns
for ( int i = 0; i < 1000; ++i )
FindInMap( "Bogus", "Bogus", MapData );
clock_t End = clock();
std::cout << "Search for non existant entry in Map: " <<
static_cast<double>( End - Start ) / 1000.0 << "ns\n";
You would need to include <ctime>
I am not sure if it's supposed to be std::clock or not (not
using namespace std, yet it finds it anyway in windows).
If you include <ctime>, it's suppose to be std::clock, and only
std::clock. If you include <time.h>, it's suppose to be both
std::clock and ::clock. To date, I've yet to see a conforming
implementation; I include <time.hand use clock (no ::), and
that seems to work everywhere.

The problem with this solution, per se, is that you really need
something to ensure that the optimizer doesn't eliminate the
find completely. What I've used, to date, is to put the
fonction to be tested in a virtual function in a derived class,
and to ensure that it uses the results of what I'm testing to
update something in the object. This seems to have worked so
far, but one day or other, I'm sure that compilers will make it
insufficient as well.

If anyone's interested, the code is in BenchHarness, in the Test
subsystem at my site (http://kanze.james.neuf.fr/code-en.html,
when it's working).

--
James Kanze (Gabi Software) email: ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Jun 13 '07 #8

This discussion thread is closed

Replies have been disabled for this discussion.