Update of /cvsroot/thplot/thplot/src/Data
In directory usw-pr-cvs1:/tmp/cvs-serv32621
Modified Files:
csvData.h csvData.cpp
Log Message:
Changed data structure from vector of vectors to vector of arrays for speed.
The resulting improvement wasn't much.
Index: csvData.h
===================================================================
RCS file: /cvsroot/thplot/thplot/src/Data/csvData.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** csvData.h 4 Jul 2002 23:42:36 -0000 1.2
--- csvData.h 7 Jul 2002 15:54:52 -0000 1.3
***************
*** 49,53 ****
int getNumPoints(int pidx) {if (NumData.size() > 0) return(NumData.size()); else return(0);}
int getNumPoints(string name) { return NumData.size(); }
! int getNumParameters(void) {return(NumData[0].size());}
double getStartTime(void) {if (NumData.size() >= 2) return(NumData[0][0]); else return(0);}
double getEndTime(void) {if (NumData.size() >= 2) return(NumData[NumData.size()-1][0]); else return(0);}
--- 49,53 ----
int getNumPoints(int pidx) {if (NumData.size() > 0) return(NumData.size()); else return(0);}
int getNumPoints(string name) { return NumData.size(); }
! int getNumParameters(void) {return(names.size());}
double getStartTime(void) {if (NumData.size() >= 2) return(NumData[0][0]); else return(0);}
double getEndTime(void) {if (NumData.size() >= 2) return(NumData[NumData.size()-1][0]); else return(0);}
***************
*** 66,77 ****
std::vector<string> names;
string data_str;
! typedef std::vector <double> Row;
! typedef std::vector <Row> DataType;
DataType NumData;
string buff_str;
ifstream f;
! Row Max;
! Row Min;
int StartIdx, EndIdx;
--- 66,76 ----
std::vector<string> names;
string data_str;
! typedef std::vector <double*> DataType;
DataType NumData;
string buff_str;
ifstream f;
! std::vector<double> Max;
! std::vector<double> Min;
int StartIdx, EndIdx;
Index: csvData.cpp
===================================================================
RCS file: /cvsroot/thplot/thplot/src/Data/csvData.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** csvData.cpp 4 Jul 2002 23:42:36 -0000 1.2
--- csvData.cpp 7 Jul 2002 15:54:52 -0000 1.3
***************
*** 81,84 ****
--- 81,85 ----
int row=0, column=0;
+ int Ncolumns = names.size();
while (1) {
***************
*** 86,90 ****
getline(f, data_str);
if(f.eof()) break;
! NumData.push_back(*(new Row()));
end = 0;
while (1) {
--- 87,91 ----
getline(f, data_str);
if(f.eof()) break;
! NumData.push_back(new double[Ncolumns]);
end = 0;
while (1) {
***************
*** 97,115 ****
end = data_str.size();
var = data_str.substr(start, end-start);
! NumData[row].push_back(atof(var.c_str()));
! //cout << row << ", " << column << endl;
column++;
break;
} else {
var = data_str.substr(start, end-start);
! NumData[row].push_back(atof(var.c_str()));
! //cout << row << ", " << column << endl;
column++;
end++;
}
! if (column == count || column > 30000 ) break;
}
row++;
- //if (row > 5 ) break;
}
--- 98,117 ----
end = data_str.size();
var = data_str.substr(start, end-start);
! if(!var.empty()) {
! NumData[row][column]=atof( var.c_str() );
! }
! //cout << row << ", " << column << "::" << var << "::" << endl;
column++;
break;
} else {
var = data_str.substr(start, end-start);
! NumData[row][column]=atof( var.c_str() );
! //cout << row << ", " << column << "::" << var << "::" << endl;
column++;
end++;
}
! if (column == Ncolumns || column > 30000 ) break;
}
row++;
}
|