GraphData Class Reference

#include <rwlock_tester.h>

List of all members.

Public Member Functions

 GraphData ()
void init (const RWLockTester &tester, const int *th_counts, size_t thread_count_len)
int add_results (const RWLockTester &tester, size_t thread_count_num)
template<class F>
int print (F f, const char *file, const char *title=NULL) const
int print_read (const char *file, const char *title=NULL) const
int print_write (const char *file, const char *title=NULL) const
int print_summary (const char *file, const char *title=NULL) const
int print_total_time (const char *file, const char *title=NULL) const

Static Public Member Functions

static MILLISECONDS get_read (const RWLockGraphData &d, size_t indx)
static MILLISECONDS get_write (const RWLockGraphData &d, size_t indx)
static MILLISECONDS get_sum (const RWLockGraphData &d, size_t indx)
static MILLISECONDS get_total (const RWLockGraphData &d, size_t indx)

Private Attributes

std::vector< int > threads
std::vector< RWLockGraphDatalock_info


Detailed Description

Definition at line 249 of file rwlock_tester.h.


Constructor & Destructor Documentation

GraphData::GraphData (  )  [inline]

Definition at line 254 of file rwlock_tester.h.

00254 {}


Member Function Documentation

void GraphData::init ( const RWLockTester tester,
const int *  th_counts,
size_t  thread_count_len 
)

Definition at line 377 of file rwlock_tester.cc.

References RWLockTester::begin(), RWLockTester::end(), lock_info, and threads.

Referenced by main().

00378 {
00379         threads.clear();
00380         threads.insert(threads.begin(),th_counts, th_counts+thread_count_len);
00381         for(std::vector<RWLockLoopTest *>::const_iterator i=tester.begin(); i!=tester.end(); i++)
00382         {
00383                 size_t last = lock_info.size();
00384                 lock_info.resize(last+1);
00385                 lock_info[last].clear();
00386                 lock_info[last].name = (*i)->name();
00387                 lock_info[last].resize(thread_count_len);
00388         }
00389 }

int GraphData::add_results ( const RWLockTester tester,
size_t  thread_count_num 
)

Definition at line 391 of file rwlock_tester.cc.

References lock_info, and RWLockTester::size().

Referenced by main().

00392 {
00393         for(size_t indx=0; indx<tester.size(); indx++)
00394         {
00395                 lock_info[indx].read[thread_count_num] = tester[indx]->get_read_thread_time();
00396                 lock_info[indx].write[thread_count_num] = tester[indx]->get_write_thread_time();
00397                 lock_info[indx].total[thread_count_num] = tester[indx]->get_total_test_time();
00398         }
00399         return 0;
00400 }

template<class F>
int GraphData::print ( f,
const char *  file,
const char *  title = NULL 
) const [inline]

Definition at line 420 of file rwlock_tester.h.

References lock_info, and threads.

Referenced by print_read(), print_summary(), print_total_time(), and print_write().

00421 {
00422         FILE *f = fopen(file, "w");
00423         if(f == NULL) return errno;
00424         if(title)
00425                 fprintf(f, "# %s\n", title);
00426         fprintf(f, "%32.32s \t ", "threads:");
00427         for(std::vector<int>::const_iterator i=threads.begin(); i!=threads.end(); i++)
00428         {
00429                 fprintf(f, "%16d \t ", *i);
00430         }
00431         fprintf(f, "\n");
00432         for(std::vector<RWLockGraphData>::const_iterator curr=lock_info.begin(); curr!=lock_info.end(); curr++)
00433         {
00434                 fprintf(f, "\"%-30.30s\" \t ", curr->name.c_str());
00435                 for(size_t ii=0; ii<threads.size(); ii++)
00436                         fprintf(f, "%16llu \t ", (unsigned long long)binf(*curr, ii));
00437                 fprintf(f, "\n");
00438         }
00439 
00440         fclose(f);
00441         return 0;
00442 }

static MILLISECONDS GraphData::get_read ( const RWLockGraphData d,
size_t  indx 
) [inline, static]

Definition at line 260 of file rwlock_tester.h.

References RWLockGraphData::read.

Referenced by print_read().

00260 { return d.read[indx]; }

static MILLISECONDS GraphData::get_write ( const RWLockGraphData d,
size_t  indx 
) [inline, static]

Definition at line 261 of file rwlock_tester.h.

References RWLockGraphData::write.

Referenced by print_write().

00261 { return d.write[indx]; }

static MILLISECONDS GraphData::get_sum ( const RWLockGraphData d,
size_t  indx 
) [inline, static]

Definition at line 262 of file rwlock_tester.h.

References RWLockGraphData::read, and RWLockGraphData::write.

Referenced by print_summary().

00262 { return d.read[indx] + d.write[indx]; }

static MILLISECONDS GraphData::get_total ( const RWLockGraphData d,
size_t  indx 
) [inline, static]

Definition at line 263 of file rwlock_tester.h.

References RWLockGraphData::total.

Referenced by print_total_time().

00263 { return d.total[indx]; }

int GraphData::print_read ( const char *  file,
const char *  title = NULL 
) const [inline]

Definition at line 443 of file rwlock_tester.h.

References get_read(), and print().

Referenced by main().

00444 { return print(get_read, file, title); }

int GraphData::print_write ( const char *  file,
const char *  title = NULL 
) const [inline]

Definition at line 446 of file rwlock_tester.h.

References get_write(), and print().

Referenced by main().

00447 { return print(get_write, file, title); }

int GraphData::print_summary ( const char *  file,
const char *  title = NULL 
) const [inline]

Definition at line 449 of file rwlock_tester.h.

References get_sum(), and print().

Referenced by main().

00450 { return print(get_sum, file, title); }

int GraphData::print_total_time ( const char *  file,
const char *  title = NULL 
) const [inline]

Definition at line 452 of file rwlock_tester.h.

References get_total(), and print().

Referenced by main().

00453 { return print(get_total, file, title); }


Member Data Documentation

std::vector<int> GraphData::threads [private]

Definition at line 251 of file rwlock_tester.h.

Referenced by init(), and print().

std::vector<RWLockGraphData> GraphData::lock_info [private]

Definition at line 252 of file rwlock_tester.h.

Referenced by add_results(), init(), and print().


The documentation for this class was generated from the following files:

Generated on Wed Mar 19 14:59:59 2008 for rwlock by  doxygen 1.5.5