#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< Stream > | m_streamTable |
構成 | |
class | SelectDeleteEntry |
class | SelectStream |
struct | Stream |
StridePred.h の 42 行で定義されています。
Onikiri::StridePred< T >::StridePred | ( | int | historySize, | |
int | streamSize | |||
) | [inline] |
StridePred.h の 129 行で定義されています。
参照先 Onikiri::StridePred< T >::Initialize().
00130 { 00131 Initialize(historySize,streamSize); 00132 }
関数の呼び出しグラフ:
Onikiri::StridePred< T >::~StridePred | ( | ) | [inline] |
void Onikiri::StridePred< T >::Analyze | ( | T | t | ) | [inline, protected] |
StridePred.h の 84 行で定義されています。
参照先 Onikiri::StridePred< T >::CheckDuplication()・Onikiri::StridePred< T >::m_historyTable・Onikiri::StridePred< T >::m_streamSize・Onikiri::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:
bool Onikiri::StridePred< T >::CheckDuplication | ( | Stream | s | ) | [inline, protected] |
StridePred.h の 117 行で定義されています。
参照先 Onikiri::StridePred< T >::Stream::diff・Onikiri::StridePred< T >::m_streamTable・Onikiri::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:
void Onikiri::StridePred< T >::Initialize | ( | int | historySize, | |
int | streamSize | |||
) | [inline] |
StridePred.h の 135 行で定義されています。
参照先 Onikiri::StridePred< T >::m_historySize・Onikiri::StridePred< T >::m_historyTable・Onikiri::StridePred< T >::m_streamSize・Onikiri::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:
void Onikiri::StridePred< T >::Predict | ( | T * | pt, | |
int | num | |||
) | [inline] |
StridePred.h の 151 行で定義されています。
参照先 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 }
void Onikiri::StridePred< T >::PrintStream | ( | Stream | s | ) | [inline] |
StridePred.h の 175 行で定義されています。
参照先 Onikiri::StridePred< T >::Stream::conf・Onikiri::StridePred< T >::Stream::diff・Onikiri::StridePred< T >::Stream::next・Onikiri::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 }
void Onikiri::StridePred< T >::PrintStream | ( | ) | [inline] |
StridePred.h の 168 行で定義されています。
参照先 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 }
void Onikiri::StridePred< T >::Update | ( | T * | pt, | |
int | num | |||
) | [inline] |
StridePred.h の 162 行で定義されています。
参照先 Onikiri::StridePred< T >::Update().
00163 { 00164 for(int i = 0;i < num;i++) 00165 Update(pt[i]); 00166 }
関数の呼び出しグラフ:
void Onikiri::StridePred< T >::Update | ( | T | t | ) | [inline] |
StridePred.h の 143 行で定義されています。
参照先 Onikiri::StridePred< T >::Analyze()・Onikiri::StridePred< T >::m_historySize・Onikiri::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:
unsigned int Onikiri::StridePred< T >::m_historySize [protected] |
StridePred.h の 79 行で定義されています。
参照元 Onikiri::StridePred< T >::Initialize()・Onikiri::StridePred< T >::Update().
list<T> Onikiri::StridePred< T >::m_historyTable [protected] |
unsigned int Onikiri::StridePred< T >::m_streamSize [protected] |
StridePred.h の 81 行で定義されています。
参照元 Onikiri::StridePred< T >::Analyze()・Onikiri::StridePred< T >::Initialize().
vector<Stream> Onikiri::StridePred< T >::m_streamTable [protected] |