2

在我开始我的问题之前,我想指出它与这个问题不相似。 编写平台特定代码与 dart:ffi 代码之间的区别。在这里,提问者询问实际差异,而我试图了解使用这两种方法可以实现的相同任务的差异。

在平台上运行本机 c/c++ 代码,在平台端获取结果(例如 Kotlin)并通过方法通道将其发送到 dart 与编写dart:ffi接口并直接调用本机 c++ 代码有什么区别。它们基本上将提供相同的代码执行。我看到的唯一区别是 MethodChannel 调用将是异步任务与dart:ffi同步任务。除了异步行为之外,从这两种技术中获取响应是否会有任何差异(主要是性能)。

4

1 回答 1

1

这是 dart:ffi 的旅游仓库:https ://github.com/Sunbreak/native_interop.tour

  1. 异步/同步
  • 对于 MethodChannel,两者Dart -> NativeNative -> Dart都是异步的
  • 对于 dart:ffi,Dart -> Native并且Native -> Dart可以是同步的(来自 Isolate 的非可变线程的本地调用除外)
  1. 记忆
  • 对于 MethodChannel,每个互操作都需要序列化/反序列化
  • 对于 dart:ffi,您可以轻松编写类似 C 的内存高效操作
  1. 表现

dart:ffi 同步互操作对不频繁的小数据有很好的优势

https://www.xdea.xyz/2020/11/flutter-platform-channel-%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95/

于 2021-04-16T05:36:21.823 回答