还是说现在情况反过来了?
据我所知,有些领域 C# 比 C++ 更快,但我从未有勇气自己测试。
希望您能详细解释这些差异或指导我获取相关信息。
还是说现在情况反过来了?
据我所知,有些领域 C# 比 C++ 更快,但我从未有勇气自己测试。
希望您能详细解释这些差异或指导我获取相关信息。
因此,从理论上讲,这对于其他GC语言也是可能的。
我真的看不出在大多数应用程序中无法使用C#进行元编程的极端劣势,因为大多数程序员都不使用它。
另一个重要的优势是,像 LINQ “扩展” 一样,SQL 提供了编译器优化对数据库调用的机会(换句话说,编译器可以将整个 LINQ 编译为一个“blob”二进制文件,在其中内联或针对您的使用进行优化,但我这里只是在推测)。我认为有些用C#编写的应用程序运行速度很快,同样也有更多用C++编写的应用程序运行速度很快(毕竟C++比较老...UNIX也是如此...)
- 问题确实在于 - 用户和开发人员抱怨的是什么...
在我看来,对于C#,我们有非常舒适的用户界面,非常漂亮的库层次结构,以及整个CLI接口系统。对于C++,我们有模板,ATL,COM,MFC以及OpenGL,DirectX等已经编写和运行的代码的整个系列...开发人员抱怨C#中GC调用不确定地增加(意味着程序运行很快,然后在一秒钟内 - 突然卡住了)。
使用C#编写代码非常简单快捷(不要忘记这也增加了错误的机会)。对于C++,开发人员抱怨内存泄漏,即崩溃,DLL之间的调用,以及“DLL hell” - 支持和替换新库的问题...
我认为你在编程语言方面的技能越高,你的软件就越具有质量(和速度)。
#include "stdafx.h"
using namespace System;
using namespace System::Diagnostics;
bool EqualMe(String^ first, String^ second)
{
return first->Equals(second);
}
int main(array<String ^> ^args)
{
Stopwatch^ sw = gcnew Stopwatch();
sw->Start();
for (int i = 0; i < 100000; i++)
{
EqualMe(L"one", L"two");
}
sw->Stop();
Console::WriteLine(sw->ElapsedTicks);
return 0;
}
> 毕竟,答案肯定某处存在,不是吗? :)
嗯,不是这样的。
正如几个回复所指出的那样,问题缺乏明确说明,会引发更多的问题,而非答案。仅以一种方式为例:
然后是哪些程序?哪台机器?使用哪个操作系统?哪个数据集?
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();
}
字符串数组和ArrayList被用于特定的指令。
以下是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();
}
我使用的输入文件大小为40KB。
这是结果 -
哦,但这是在Linux上...使用C#在Mono上运行...而C++则使用g++。
好的,这是我在Windows上得到的结果 - Visual Studio 2003: