c - Vala 生成的 C 代码比手写的 C 代码优化了多少?

标签 c gcc vala gobject

Vala 生成的代码是否像普通的手写 C 代码一样进行了优化?与不使用 GObject 系统相比,使用 GObject 系统是否有任何性能开销?

注意:在我的下一个 C 项目中,我正在研究是否使用 Vala。该项目不是 GUI 应用程序,它是一种解释器类型的应用程序,必须与平台无关。我使用 gcc 作为编译器。

最佳答案

作为一名 Vala 开发者,我不建议将 Vala 用作解释器。在解释器中,您将为 ast、数据类型、可能的中间对象、codegen 对象等创建许多对象。在 Vala 本身,我个人测量过主要开销是创建对象(简单的 GTypeInstance,甚至不是 GObject)。 Vala 旨在与 gobjects 一起使用,但 gobjects 并非设计用于快速分配。

所以,对于你的项目,我仍然会使用 glib/gio 来处理跨平台的东西,比如网络、字符串实用程序、unicode、数据结构等等,因为它们有一个干净、一致和方便的 API,但我不会将 ast 对象创建为 gobjects/gtypeinstance。 在解释器中,您需要快速分配,这就是重点。

我的个人建议是:如果你想构建桌面应用程序、dbus 服务、gstreamer 的东西或任何触及 g* 世界的东西,就使用 vala,别无其他。

关于c - Vala 生成的 C 代码比手写的 C 代码优化了多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058330/

相关文章:

vala - 有没有办法在 Vala 安装期间创建 GSettings 架构?

c - 如何使用C在csv中的连续逗号之间添加值?

c++ - C++ 中的参数和函数问题

c - execve 在 linux 上,从参数执行

c - Vala vapi 文件文档

java - 我可以使用 Java 为 Elementary OS AppCenter 进行开发吗?

c - MS C++ 禁用函数重新排序

gcc - 在 GCC 中链接包含循环引用的库

c++ - 将指针传递给由 exec() 生成的进程

c++ - 对标志在 makefile 中的工作方式感到困惑