如果它比C ++慢,你为什么要使用C#?

时间:2009-04-24 20:08:32

标签: c# c++ performance

我正在寻找一种在C ++和Java之后学习的新语言。我打算尝试使用C#,但是很多人说它真的很慢,因为它是一种高级语言。那么为什么有人会使用C#? C ++不是更快吗?它是否使开发更容易,但最终产品更慢?

此外,C#可以用于什么?你在Windows上使用它和很多.NET的东西,以及ASP.NET,但是在其他情况下,人们会使用C#?会有很多就业机会吗?

11 个答案:

答案 0 :(得分:74)

究竟是谁“一群人”?他们比较什么?

对于绝大多数事情来说,C ++ “比C#快得多”。它肯定在各种情况下都有好处,特别是在你想要更确定的内存处理的地方,但根据我的经验,大多数应用程序的瓶颈并不在C ++有帮助的地方。正如斯普尔森所说,设计中有很多性能而不是精确的实现 - 而且,它有助于轻松尝试不同的设计。

为什么我们会使用C#,因为比C ++慢?因为它通常被认为(即一些不同意:)更容易开发而不会让自己陷入困境。

至于C#可以用于什么......你想要什么使用它?除非你想开发驱动程序和内核,否则对你来说可能没问题。 (甚至OS开发都有一些人使用C#...)

工作机会?负荷。

缺点?嗯,.NET本身仅适用于Microsoft平台。有Mono,但它没有与Java相同程度的可移植性(根据同一群人的说法,毫无疑问是另一种“慢”语言)。

答案 1 :(得分:39)

用汇编编写的代码可能非常快。为什么不用汇编写?

不要相信你听到的一切。对于我的所有项目,C#都非常快。通常,性能比原始平台性能更重要。

答案 2 :(得分:21)

我不得不说你说话的人根本不知道他们在谈论什么。干净利落。

许多企业级应用程序都是基于C#和其他.Net语言构建的。他们没有什么本质上的缓慢。是的趋势启动时间较慢,但这几乎就是它结束的地方。

我注意到你在语言列表中提到过Java。如果您对Java的速度感到满意,C#将不会出现任何问题。一般来说,C#在许多不同类型的基准测试中的表现至少与Java相同。

答案 3 :(得分:21)

我的上一家公司由5位C ++老手创立,每位经验都超过15年。他们花了一个多月的时间来构建某个Windows服务。其中一人发现并涉足C#。在一个星期内,他的收入超过了他们当月的集体。不久之后,他们都切换到C#。

为什么C#可能会表现得更慢:你对这种快速发展的价格是多少?

答案 4 :(得分:6)

为什么要慢? 实际上,C#被编译为'Intermediate Language',它在运行时是JIT',但这可以为您带来性能优势,因为运行时可以为运行代码的平台生成最优化的...

根据您要编写的应用程序,语言的“速度”会产生轻微影响。 应用程序的性能主要取决于您设计应用程序的方式,如果您充分利用您使用的工具/技术等等...... 当然,C#不是一个灵丹妙药,有些项目你不应该使用它,只是因为它不适合这项工作,但对于大多数商业/企业应用程序来说它会做得很好。

答案 5 :(得分:5)

我没有发现许多C#不是很好的语言选择,而.Net(或Mono)不是一个不错的平台。值得注意的例外是内核级开发或驱动程序。有很多领域需要低水平和原始性能。对于大多数人来说,如果没有所有业务,或企业应用程序C#是开发的更好选择之一。它得到了很好的支持,可以与许多其他系统,库,通信渠道和已经可用的组件一起使用,更不用说是一种非常好用的语言(特别是3.5)。

ASP.Net不是一个糟糕的平台,我通常发现对象/控件堆栈是复杂交互的缺点之一。我认为ASP.Net MVC更适合更可扩展的基于Web的应用程序。同样,它比我过去曾经使用的许多其他系统更好。

在服务层,甚至GUI开发方面,它都非常好。我在基于Web的应用程序,服务/通信/业务层方面比在桌面GUI应用程序方面有更多的经验,因此无法在那里发表评论。我觉得很多GUI开发更多的是关于IDE / Toolkit,而不是特定的语言。

至于速度慢,你专门列出Java,在大多数情况下,C#/。Net比Java快或快。使用C#(Visual Studio)而不是Java(Eclipse),IMHO开发特别顺畅。对于基于Web的应用程序,我喜欢Swing上的ASP.Net MVC(甚至是ASP.Net)。那只是我。

答案 6 :(得分:4)

与你交谈的人不知道他们在说什么。所有人都说C#是一种非常类似于Java的语言;它具有大多数相同的优点和缺点。它的工作方式非常相似(Java / C#被编译成一个中间语言/字节码,被解释或JIT编译为本机代码,具有各种类似的优化,您不需要担心它们作为程序员)。它在许多与Java相同的情况下使用,并且真正针对同一市场。它的移动速度要快得多,并且作为一种语言带来了很多创新,但它(在实践中)几乎只有Windows,如果这是你的关注。就业市场类似。两者都是非常流行的语言。

至于要学习的语言,我会建议一些不同的东西。你说你懂C ++和Java; C#不应该难以接受。潜在的雇主会知道这一点。尝试Scala或Python。两者都会给你一些关于事物的新观点(C#不是那么多),并通过教你新的思考方式让你成为一个更好的程序员,而不只是在你的盒子里添加另一个工具。

答案 7 :(得分:2)

C#并不总是较慢 - 在许多情况下,它的表现与您列出的任何语言一样好。通常算法与速度有关,而不是选择语言。

然而,C#非常具有表现力,并且有一个很棒的基类库可供使用,并且超快速编译。这意味着它非常容易使用,并且可以让您比许多其他语言(尤其是C ++)更高效。例如,我只有一个小项目,我本可以在C ++中预算1个人工作周,我们在不到一天的时间内完成了C#,主要是因为基类库简化了很多任务。

答案 8 :(得分:0)

使用C#而不是C ++的一个重要原因.........看看C ++在人们接管你的机器时遇到的所有缓冲区溢出问题,因为它们会在你的字符串中注入可执行代码 或内存泄漏....垃圾收集器是相当方便的恕我直言

答案 9 :(得分:0)

即使C ++的运行速度更快,但今天的计算机差异并不大。这就是为什么在cpu和内存相当有限的移动设备上,C / C ++仍然被广泛使用。

但请考虑开发时间。如果使用C ++需要2个月,使用C#需要1个月,你会选择哪个?当需要进行大的修改/重构时,更高级别的语言会使它更快更容易!

答案 10 :(得分:0)

我肯定会使用C#。它实际上是平均速度,如果你喜欢java,它几乎完全相同,因为它们都是基于C ++。