当前位置:  开发笔记 > 编程语言 > 正文

我们必须使用C"出于性能原因"

如何解决《我们必须使用C"出于性能原因"》经验,为你挑选了10个好方法。

在这个多语言的时代,几乎每一项任务似乎都有一种很好的语言,而且我发现自己在专业上正在努力克服" 除了C很快 "之外的咒语,其中快速的意思是"足够快".我和非常理性的思想开放的人合作,他们喜欢比较数字,而我所拥有的只是想法和意见.你能帮助我找到主观意见并进入"现实世界"吗?

您是否可以帮我找到关于嵌入式和(Linux)系统编程可以使用其他任何语言的研究?我很可能会推动一个错误的假设,并非常感谢研究向我展示这一点.您可以链接或包含好的数字,以帮助将"这只是他/她的意见"评论保持在最低限度.


所以这些是我的特殊要求

记忆不是一个严重的约束

便携性不是一个严重的问题

这不是一个实时系统

Reed Copsey.. 49

根据我的经验,使用C进行嵌入式和系统编程不一定是性能问题 - 它通常是一个可移植性问题.C往往是几乎所有平台上最便携,最受支持的语言,特别是在嵌入式系统平台上.

如果您希望在嵌入式系统中使用其他东西,通常需要确定哪些选项可用,然后确定性能,内存消耗,库支持等是否"足够好"适合您的情况.



1> Reed Copsey..:

根据我的经验,使用C进行嵌入式和系统编程不一定是性能问题 - 它通常是一个可移植性问题.C往往是几乎所有平台上最便携,最受支持的语言,特别是在嵌入式系统平台上.

如果您希望在嵌入式系统中使用其他东西,通常需要确定哪些选项可用,然后确定性能,内存消耗,库支持等是否"足够好"适合您的情况.


是的 - 我完全同意这一点.在我以前的雇主那里,当然有一种文化风格偏向于C(和汇编程序)以外的任何东西,但最重要的是,用于嵌入式系统的专业级工具集非常少,只支持C以外的任何东西.你*可能*找到C++的工具集支持,在极少数情况下,Java.对于其他语言(例如,Erlang),存在一些垂直堆叠的利基平台,但这些平台几乎不可能出售给管理层,特别是对于现有系统.
是的 - Python可以.我甚至使用过Lua(因为它在开销方面非常小).这是内存开销和库支持,这可能是像pythong这样的问题.

2> Neil..:

"除了C很快[足够]之外,其他任何东西都是早期优化,而且早期优化错误的原因都是错误的.如果您的系统具有足够的复杂性以至于需要C之外的其他东西,则系统的某些部分必须"足够快"并且部件具有较轻的约束.如果编写代码(例如,在Python中)可以更快地完成项目,减少错误,那么您可以使用一些C或汇编代码来加速时间关键部分.

即使事实证明整个代码必须用C或汇编语言编写以满足性能要求,使用像Python这样的语言进行原型设计可以带来真正的好处.您可以使用正在运行的Python原型并逐步用C代码替换部件,直到达到必要的性能.

因此,使用可以让您最准确,最快速地完成开发工作的工具,然后使用实际数据来确定您需要优化的位置.可能有时候C是最合适的工具,但有时并非总是如此,即使在嵌入式系统中也是如此.



3> Johannes Rud..:

将C用于嵌入式系统有一些很好的理由,其中"性能"只是次要的一个.嵌入式非常接近硬件,您需要手动内存地址来与硬件进行通信.所有API和SDK主要适用于C语言.

只有少数平台可以为Java或Mono运行VM,这部分是由于性能影响,但也是由于昂贵的实施成本.



4> Thorarin..:

除了性能之外,还有另一个考虑因素:您很可能正在处理旨在用于C或C++的低级API.

如果你不能使用某些SDK,你只会遇到麻烦,而不是节省使用更高级语言开发的时间.至少,你最终会重做一堆函数声明和常量定义.



5> Gerhard..:

对于C:

C通常是处理器编译器支持的唯一语言.

大多数库和示例代码也是C中的概率.

大多数嵌入式开发人员拥有多年的C经验,但在其他任何方面都缺乏经验

允许直接硬件接口和手动内存管理.

易于与汇编语言集成.

C将会存在很多年.在嵌入式开发中,它是垄断企业,可以扼杀任何改变的企图.需要像Java或Lua这样的VM的语言永远不会成为嵌入式环境中的主流.如果编译语言提供了超过C的引人注目的新功能,它可能会有机会.



6> Peter Olsson..:

不同语言之间的网络有几个基准.其中大多数你会在顶部找到一个C或C++实现,因为它们可以让你更好地控制真正优化的东西.

示例:计算机语言基准游戏.



7> Nosredna..:

很难与C(或Pascal,Modula-2,Ada等其他程序语言)和嵌入式程序集进行争论.这些语言有很大的成功历史.通常,您希望消除未知的风险.在我看来,尝试使用除C或汇编之外的任何东西都是未知数.话虽如此,混合模型没有任何问题,您可以使用其中一个转到C的方案,或者使用Python或Lua或JavaScript作为脚本语言.

你想要的是能够在必要时快速轻松地转到C语言.

如果你说服团队去做一些未经证实的事情,项目就是你的cookie.如果它崩溃了,它可能会被视为你的错.



8> Christopher..:

在某些情况下,您需要实时性能,尤其是在嵌入式系统中.您还有严重的内存限制.像C这样的语言可以让您更好地控制执行时间和执行空间.

所以,根据你的工作,C可能会"更好"或更合适.

查看以下文章

http://theunixgeek.blogspot.com/2008/09/c-vs-python-speed.html

http://wiki.python.org/moin/PythonSpeed/PerformanceTips(特别是参见Python不是C部分)

http://scienceblogs.com/goodmath/2006/11/the_c_is_efficient_language_fa.php



9> Steve Melnik..:

本文(由Michael Barr 撰写)讨论了嵌入式系统中C,C++,汇编程序和其他语言的使用,并包含了显示每种语言的相对用法的图表.

这是另一篇文章,恰当地称为拒绝C++的不良理由.



10> WolfmanDrago..:

Ada是一种高级编程语言,专为嵌入式系统和关键任务系统而设计.

它是一种快速安全的语言,可以在任何地方内置数据检查.这就是飞机上的自动驾驶员编程的原因.

在此链接中,您可以比较Ada和C.


我过去曾经使用过ADA,现在很想使用它,但我找不到能够生成在2K ROM/256字节RAM环境中运行的代码的版本.
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有