クラス テンプレート Onikiri::StridePred< T >

#include <StridePred.h>

すべてのメンバ一覧

Public メソッド

void Initialize (int historySize, int streamSize)
void Predict (T *pt, int num)
void PrintStream (Stream s)
void PrintStream ()
 StridePred (int historySize, int streamSize)
void Update (T *pt, int num)
void Update (T t)
 ~StridePred ()

Protected メソッド

void Analyze (T t)
bool CheckDuplication (Stream s)

Protected 変数

unsigned int m_historySize
list< T > m_historyTable
unsigned int m_streamSize
vector< Streamm_streamTable

構成

class  SelectDeleteEntry
class  SelectStream
struct  Stream


説明

template<typename T>
class Onikiri::StridePred< T >

StridePred.h42 行で定義されています。


コンストラクタとデストラクタ

template<typename T>
Onikiri::StridePred< T >::StridePred ( int  historySize,
int  streamSize 
) [inline]

StridePred.h129 行で定義されています。

参照先 Onikiri::StridePred< T >::Initialize().

00130         {
00131             Initialize(historySize,streamSize);
00132         }

関数の呼び出しグラフ:

template<typename T>
Onikiri::StridePred< T >::~StridePred (  )  [inline]

StridePred.h133 行で定義されています。

00133 {}


関数

template<typename T>
void Onikiri::StridePred< T >::Analyze ( t  )  [inline, protected]

StridePred.h84 行で定義されています。

参照先 Onikiri::StridePred< T >::CheckDuplication()Onikiri::StridePred< T >::m_historyTableOnikiri::StridePred< T >::m_streamSizeOnikiri::StridePred< T >::m_streamTable.

参照元 Onikiri::StridePred< T >::Update().

00085         {
00086             vector<Stream>::iterator sitr = m_streamTable.begin();
00087             while(sitr != m_streamTable.end())
00088             {
00089                 (*sitr).time++;
00090                 if((*sitr).next == t)
00091                 {
00092                     (*sitr).next += (*sitr).diff;
00093                     (*sitr).conf++;
00094                     (*sitr).time = 0;
00095                 }
00096                 sitr++;
00097             }
00098             list<T>::iterator titr = m_historyTable.begin();
00099             sort(m_streamTable.begin(),m_streamTable.end(),SelectDeleteEntry());
00100             while(titr != m_historyTable.end())
00101             {
00102                 Stream s;
00103                 s.time = 0;
00104                 s.conf = 1;
00105                 s.diff = t - (*titr);
00106                 s.next = t + s.diff;
00107                 if(CheckDuplication(s))
00108                 {
00109                     if(m_streamTable.size() == m_streamSize)
00110                         m_streamTable.erase(m_streamTable.begin());
00111                     m_streamTable.push_back(s);
00112                 }
00113                 titr++;
00114             }
00115         }

関数の呼び出しグラフ:

Here is the caller graph for this function:

template<typename T>
bool Onikiri::StridePred< T >::CheckDuplication ( Stream  s  )  [inline, protected]

StridePred.h117 行で定義されています。

参照先 Onikiri::StridePred< T >::Stream::diffOnikiri::StridePred< T >::m_streamTableOnikiri::StridePred< T >::Stream::next.

参照元 Onikiri::StridePred< T >::Analyze().

00118         {
00119             vector<Stream>::iterator itr = m_streamTable.begin();
00120             while(itr != m_streamTable.end())
00121             {
00122                 if(s.next == (*itr).next && s.diff == (*itr).diff)
00123                     return false;
00124                 itr++;
00125             }
00126             return true;
00127         }

Here is the caller graph for this function:

template<typename T>
void Onikiri::StridePred< T >::Initialize ( int  historySize,
int  streamSize 
) [inline]

StridePred.h135 行で定義されています。

参照先 Onikiri::StridePred< T >::m_historySizeOnikiri::StridePred< T >::m_historyTableOnikiri::StridePred< T >::m_streamSizeOnikiri::StridePred< T >::m_streamTable.

参照元 Onikiri::StridePred< T >::StridePred().

00136         {
00137             m_historySize = historySize;
00138             m_streamSize = streamSize;
00139             m_historyTable.clear();
00140             m_streamTable.clear();
00141         }

Here is the caller graph for this function:

template<typename T>
void Onikiri::StridePred< T >::Predict ( T *  pt,
int  num 
) [inline]

StridePred.h151 行で定義されています。

参照先 Onikiri::StridePred< T >::m_streamTable.

00152         {
00153             sort(m_streamTable.begin(),m_streamTable.end(),SelectStream());
00154             vector<Stream>::iterator itr = m_streamTable.begin();
00155             for(int i = 0;i < num && itr != m_streamTable.end();i++,itr++)
00156             {
00157                 pt[i] = (*itr).next;
00158             }
00159         }

template<typename T>
void Onikiri::StridePred< T >::PrintStream ( Stream  s  )  [inline]

StridePred.h175 行で定義されています。

参照先 Onikiri::StridePred< T >::Stream::confOnikiri::StridePred< T >::Stream::diffOnikiri::StridePred< T >::Stream::nextOnikiri::StridePred< T >::Stream::time.

00176         {
00177             cout << "next:" << s.next << " diff" << s.diff << " conf:" << s.conf << " time:" << s.time << "\n";
00178             for(int i = s.conf + 1;i > 0;i--)
00179             {
00180                 cout << s.next - i*s.diff << " ";
00181             }
00182             
00183             cout << "\n";
00184         }

template<typename T>
void Onikiri::StridePred< T >::PrintStream (  )  [inline]

StridePred.h168 行で定義されています。

参照先 Onikiri::StridePred< T >::m_streamTable.

00169         {
00170             sort(m_streamTable.begin(),m_streamTable.end(),SelectStream());
00171             vector<Stream>::iterator itr = m_streamTable.begin();
00172             while(itr != m_streamTable.end())
00173                 PrintStream(*(itr++));
00174         }

template<typename T>
void Onikiri::StridePred< T >::Update ( T *  pt,
int  num 
) [inline]

StridePred.h162 行で定義されています。

参照先 Onikiri::StridePred< T >::Update().

00163         {
00164             for(int i = 0;i < num;i++)
00165                 Update(pt[i]);
00166         }

関数の呼び出しグラフ:

template<typename T>
void Onikiri::StridePred< T >::Update ( t  )  [inline]

StridePred.h143 行で定義されています。

参照先 Onikiri::StridePred< T >::Analyze()Onikiri::StridePred< T >::m_historySizeOnikiri::StridePred< T >::m_historyTable.

参照元 Onikiri::StridePred< T >::Update().

00144         {
00145             Analyze(t);
00146             m_historyTable.push_back(t);
00147             if(m_historySize < m_historyTable.size())
00148                 m_historyTable.pop_front();
00149         }

関数の呼び出しグラフ:

Here is the caller graph for this function:


変数

template<typename T>
unsigned int Onikiri::StridePred< T >::m_historySize [protected]

StridePred.h79 行で定義されています。

参照元 Onikiri::StridePred< T >::Initialize()Onikiri::StridePred< T >::Update().

template<typename T>
list<T> Onikiri::StridePred< T >::m_historyTable [protected]

StridePred.h80 行で定義されています。

参照元 Onikiri::StridePred< T >::Analyze()Onikiri::StridePred< T >::Initialize()Onikiri::StridePred< T >::Update().

template<typename T>
unsigned int Onikiri::StridePred< T >::m_streamSize [protected]

StridePred.h81 行で定義されています。

参照元 Onikiri::StridePred< T >::Analyze()Onikiri::StridePred< T >::Initialize().

template<typename T>
vector<Stream> Onikiri::StridePred< T >::m_streamTable [protected]

StridePred.h82 行で定義されています。

参照元 Onikiri::StridePred< T >::Analyze()Onikiri::StridePred< T >::CheckDuplication()Onikiri::StridePred< T >::Initialize()Onikiri::StridePred< T >::Predict()Onikiri::StridePred< T >::PrintStream().


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:21:54 2013に生成されました。  doxygen 1.4.7