gsbind_sample
简介
gsbind_sample是一个用于演示gsbind使用,gsbind基础功能测试,gsbind基础性能测试的库。
使用
请参照本项目下cpp文件夹下的CMakeLists.txt sample.cpp 对 gsbind 动态库的实现。
FFI vs Gsbind 性能测试结果对比
| 测试用例 | 调用方式 | 耗时 | QPS | 结果/备注 |
|---|---|---|---|---|
| nop() | FFI | 160ms | 6.25M | - |
| Gsbind | 9ms | 111.11M | - | |
| add_int() | FFI | 188ms | 5.32M | result: 1000000000000 |
| Gsbind | 22ms | 45.45M | result: 1000000000000 | |
| add_float() | FFI | 183ms | 5.46M | result: 100000000000.00 |
| Gsbind | 21ms | 47.62M | result: 100000000000.00 | |
| echo_string() | FFI | 17678ms | 5.66K | - |
| Gsbind | 1945ms | 51.41K | - | |
| multi_params_int(5) | FFI | 211ms | 4.74M | result: 2500007500000 |
| Gsbind | 35ms | 28.57M | result: 2500007500000 | |
| mixed_params() | FFI | 203ms | 4.93M | result: 1874998125000.00 |
| Gsbind | 30ms | 33.33M | result: 1874998125000.00 | |
| create_array(10) | Gsbind | 1108ms | 9.03K | - |
| create_map(10) | Gsbind | 2137ms | 4.68K | - |
📈 关键结论与性能趋势分析
根据以上数据,可以总结出以下几点核心结论:
- Gsbind全面占优:在所有可比的函数调用测试中,Gsbind的性能都显著优于FFI,其耗时通常只有FFI的10%-20%,QPS(吞吐量)可达FFI的数倍至十数倍。
- 性能差距因数据类型而异:基础类型(整数、浮点数):Gsbind优势巨大,说明其对于简单值类型调用的封装开销极低。参数数量:参数增多时,FFI的性能衰减相对更明显。
💡 选型与优化建议
基于以上分析,在选择和优化时可以遵循以下思路:
- 优先考虑Gsbind:如果你的项目对跨语言调用性能有较高要求,Gsbind应该是更优先的选择。它在所有测试场景下都提供了更优的性能。
- 性能敏感性决策:对于性能不敏感的内部接口或调用不频繁的场景,FFI因其标准性和通用性,仍然是一个可选项。但对于高性能核心路径,Gsbind的优势是决定性的。