Вдохновленный этим, я провел быстрый тест с 60% общих инструкций, необходимых в большинстве программ.
Вот код C #:
for (int i=0; i<1000; i++)
{
StreamReader str = new StreamReader("file.csv");
StreamWriter stw = new StreamWriter("examp.csv");
string strL = "";
while((strL = str.ReadLine()) != null)
{
ArrayList al = new ArrayList();
string[] strline = strL.Split(',');
al.AddRange(strline);
foreach(string str1 in strline)
{
stw.Write(str1 + ",");
}
stw.Write("\n");
}
str.Close();
stw.Close();
}
Массив строк и массив списков используются специально для включения этих инструкций.
Вот код C ++:
for (int i = 0; i<1000; i++)
{
std::fstream file("file.csv", ios::in);
if (!file.is_open())
{
std::cout << "File not found!\n";
return 1;
}
ofstream myfile;
myfile.open ("example.txt");
std::string csvLine;
while (std::getline(file, csvLine))
{
std::istringstream csvStream(csvLine);
std::vector csvColumn;
std::string csvElement;
while( std::getline(csvStream, csvElement, ‘,’) )
{
csvColumn.push_back(csvElement);
}
for (std::vector::iterator j = csvColumn.begin(); j != csvColumn.end(); ++j)
{
myfile << *j << ", ";
}
csvColumn.clear();
csvElement.clear();
csvLine.clear();
myfile << "\n";
}
myfile.close();
file.close();
}
Размер входного файла, который я использовал, составлял 40 КБ.
А вот и результат -
- Код C ++ выполнялся за 9 секунд.
- код C #: 4 секунды !!!
Да, но это было в Linux ... С C # на Mono ... И C ++ с g ++.
ОК, это то, что я получил в Windows - Visual Studio 2003 :
- Код C # выполнялся за 9 секунд.
- C ++ код - ужасные 370 секунд !!!