C- wrapper DLL在自定义语言中的性能
Performance of C-Wrapper DLL for C++ in custom language
目前我正在开发自己的编程语言作为学习目的,因为我想支持c++代码,而c++的ABI不是所有编译器都支持的(afaik),这个想法是实现对C ABI的支持,并在C中为c++创建包装器。
编辑:我要求运行时开销。
问题是,如果基本上我用c++对象做的所有事情都是通过这个包装器dll路由的,我会得到多少开销?还是有其他的解决方案,将工作于所有的c++编译器?
dll将使用如下注释中的代码:
MyClass a = new MyClass; // void* a_handle = MyClass_new();
a.Foobar(5); // MyClass_Foobar(a_handle, 5);
正确的答案通常是"测试它并测量它"。
一般来说,我希望额外的函数调用的性能损失可以忽略不计。它应该小于虚函数调度开销,小于或等于将一种语言的接口绑定到另一种语言的成本,这两种成本都是人们经常产生的,而不用担心太多。
没有选择特定编译器的ABI (Itanium, Visual c++和GCC在各自的平台上都是标准的或大部分标准的),我不知道还有其他方法来处理c++ ABI问题。您使用C包装器的方法也被其他项目使用。例如,MathGL就做到了这一点,并且更进一步,它提供了包含全内联类的c++头文件,这些类除了调用C接口之外什么都不做,因此无论使用的是哪种c++ ABI,都可以使用它们。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 大小相等但成员数量不同的结构之间的性能差异
- 为什么constexpr的性能比正常表达式差
- 不同语言中相同代码的不同行为
- 在类中使用随机生成器时出现性能问题
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 海湾合作委员会 ARM 性能下降
- GCC 和 Clang 代码性能的巨大差异
- 在容量内调整矢量大小时的性能影响
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- 未达到的情况会影响开关外壳性能
- Rextester 语言编译C++问题
- C- wrapper DLL在自定义语言中的性能
- 以与语言无关的方式检索性能计数器值