C++ 的性能比 C 更好?

标签 c++ c performance generics constants

<分区>

我目前正在开发一些对稳定性至关重要的高性能框架,这些框架可能会部署在 x86_64、ia64 和潜在的 ARM 平台上。到目前为止,该库是用 C 语言完成的。当前标准是 C99,但我们有兴趣试验 C11 的功能。

最初,选择避免使用 C++ 是因为我们希望防止开发人员使用类,因为它们固有的低效率,例如更大的内存占用、vtables 和继承。我们还希望结构不包含成员函数。换句话说,故意选择 C ​​而不是 C++ 是为了防止使用 C++ 中的某些功能。

但是,在进一步研究了 C++ 的一些特性之后,我们最近做了双重考虑。它似乎确实有一些好处,主要是类型安全和泛型。

我想知道的是:

1- 这种类型安全对于程序员和编译器究竟意味着什么?

2- C++ 类型安全的好处是什么?我们如何避免 C 类型不安全的陷阱?

最佳答案

1- 这种类型安全对于程序员和编译器究竟意味着什么?

类型安全保护您免于调试愚蠢的错误,例如将度数和弧度相加或尝试将“字符串”乘以整数。我不会担心对编译器的影响。在使用类型安全语言 (C++) 和非类型安全语言 (PERL,C) 进行编程后,我会说我通常花更少的时间用类型安全语言调试“计算机内部”的东西(同样,添加字符串和整数)但是花更多时间追寻类型值和定义并在它们之间进行转换。

2- C++ 类型安全的好处是什么?我们如何避免 C 类型不安全的陷阱?

类型安全是一种保护级别,允许编译器检查您正在做的事情是否正常。对于个人而言,这不如在小组设置中重要,因为虽然您知道“GetNumberOfStudents”函数输出的是字符串而不是整数,但您的同事可能不知道。 C++ 相对于 C 的更大优势在于,您可以将存储数据的方式与检索数据的方式分开,因此如果您决定在内部更改数据结构,“GetListOfAllCustomers”不会更改为使用该函数的人.

简短回答:如果您愿意牺牲开发人员时间和硬件理解时间来换取性能和紧凑性,我会倾向于 C。如果您愿意牺牲少量性能并且不受内存限制,则减少开发时间,我会倾向于 C++。我用 C# 编程进行所有数据分析,用 C 编程进行所有嵌入式软件工作。

关于C++ 的性能比 C 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246173/

相关文章:

c++ - 警告 C4244 : 'argument' : conversion from 'double' to 'float' , 可能丢失数据 - C++

c - 将 scanf 条目传递给 stdarg 函数

与 C 中的 sqrt() 函数混淆

ios - 在 iOS 4+ 上优化调色板纹理到 RGB565 的转换(使用查找表)

c++ - 如何在 C++ 列表中保存计时时间

c++ - 如何编写一个程序来显示一个数是否为质数,并可以显示文件中从 1 到 100 的质数

c++ - 命名模板参数是在最新标准中还是在现代编译器中实现的?

c - 使用 pthread 时出现 SegFault

ios - 后台保存带来的小核心数据性能提升

list - 这段 Haskell 代码高效吗?