我对编程世界比较陌生。我有几个表演问题:
发布于 2010-04-13 09:18:31
迈克尔·亚伦·萨夫扬已经给出了一个很好的答案。我只想介绍一下为什么面向对象的语言有时可以与较慢的代码相关联。
现实世界对我们程序员的要求迫使我们在更短的时间内编写更多的代码。如果有非常熟练的程序员,汇编语言将赢得每一个速度记录,因为程序员准确地编码了机器需要执行的操作,而很少有其他操作。实际上,大多数编程都不是在汇编程序中完成的,因为它非常繁琐,而且容易出错。编译语言使程序员的生产力大大提高,因为他们让编译器处理大量的细节工作。
进一步向同一方向发展,Delphi使用自动字符串:无论何时使用它们,它们都是“正确”长度;如果将两个字符串连接在一起,就会产生一个新的字符串,它是前两个字符串组合的合适长度。如果更改该字符串并使其更长,则会创建一个新字符串,并自动丢弃前一个字符串。作为一个C程序员,您可以预见到程序将做什么,并为更大的字符串分配足够的空间,这样您就不必创建新的字符串并丢弃旧的字符串。因此,字符串的内存管理对于程序员来说是一种方便,这是以牺牲一些CPU时间为代价的。
类似地,面向对象允许您将相关数据组视为同质块,而不是字符串和数字。有时,并不需要所有这些信息,在一个低级C程序中,您可能不需要对象所需要的一些操作和内存使用。这再次成为程序员比CPU速度更方便的问题。
最后,一些接口被认为是非常复杂的,软件公司试图通过创建具有概念上更简单处理的面向对象框架来使它们变得容易接近。而不是调用打开窗口,您可以创建一个窗口对象,通常有一点开销。在一项奇怪的开发中,软件公司和单个开发人员常常构建更多面向对象的框架,以隐藏或处理其他框架的复杂性。一些老项目最终在原始功能之上有多个面向对象的框架层,毫不奇怪,由于它们花费了大量的时间来管理自己,它们在消耗大量内存的同时向客户展示了糟糕的性能。
总之,由于使用的方式,面向对象的代码有时与糟糕的性能相关联;但特别是在C++的情况下,语言中没有任何东西是“慢”的。
发布于 2010-04-13 09:19:59
如前所述,您的代码在控制台应用程序中的运行速度通常与在GUI应用程序中的运行速度相同。
真正的区别是开销。在所有条件相同的情况下,GUI应用程序是更大的实例,启动和关闭需要更多的时间,并将消耗更多的资源。在应用程序运行时更新UI也是很好的形式,这可能会占用CPU密集型任务的周期。
但在大多数情况下都不重要。
发布于 2010-04-13 09:03:13
由于没有消息映射、窗口事件、GUI线程等.控制台应用程序看上去可能具有更快的性能,这种基于窗口的应用程序。但是对于您来说,在控制台应用程序和基于窗口的应用程序之间进行选择,速度不应该是唯一的标准。正如您可能知道的,窗口应用程序是“事件驱动编程”
关于语言速度,我不能说只有c编译器才能产生更快的执行代码。事实上,c++编译器为最大限度地提高编译代码的速度做了大量的代码优化。同时,OO模型也很好的编程、维护和扩展功能。
因此,根据需求使用适当的语言和技术。
https://stackoverflow.com/questions/2628164
复制相似问题