gpt4 book ai didi

c++ - 自定义语言中 C++ 的 C-Wrapper DLL 的性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:20 24 4
gpt4 key购买 nike

目前我正在开发我自己的编程语言用于学习目的,因为我想支持 C++ 代码并且 C++ 的 ABI 不受所有编译器的支持(afaik),我的想法是实现对 C ABI 的支持并创建包装器在 C 中为 C++ 编写的 dll。

编辑:我要求运行时开销。

问题是,如果基本上我对 C++ 对象所做的一切都通过这个包装器 dll 进行路由,我会得到多少开销?或者是否有适用于所有 C++ 编译器的其他解决方案?

dll 将使用注释中的代码:

MyClass a = new MyClass; // void* a_handle = MyClass_new();
a.Foobar(5); // MyClass_Foobar(a_handle, 5);

最佳答案

正确回答“这会好吗?”通常是“测试并衡量它。”

不过,总的来说,我希望额外函数调用的性能损失可以忽略不计。它应该小于虚函数调度开销,并且小于或等于将一种语言的接口(interface)绑定(bind)到另一种语言的成本,而这两种成本都是人们经常发生而不必太担心的成本。

除了选择特定编译器的 ABI(Itanium、Visual C++ 和 GCC 在各自平台上都是标准的或大部分是标准的),我不知道还有其他方法可以处理 C++ ABI 问题。您使用 C 包装器的方法也被其他项目使用。 MathGL ,例如,这样做,它更进一步,providing C++ headers包含除了调用 C 接口(interface)外什么都不做的全内联类,因此无论使用何种 C++ ABI,都可以使用它们。

关于c++ - 自定义语言中 C++ 的 C-Wrapper DLL 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24190207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com