numbersir 发表于 2024-6-9 10:41:35

火山PC的各种文本数组类的区别和使用场景

火山PC系统有 文本数组类、文本标准数组类、高性能文本数组类;
请教一下他们都有什么区别?
什么场景下使用它们比较好呢?
目前我用的较多的是文本数组类,因为常用到全局方法 分割文本() 方法,而这个方法只支持使用文本数组类来接收分割结果。


hcwanz 发表于 2024-6-9 11:15:59

本帖最后由 hcwanz 于 2024-6-9 11:25 编辑

文本数组类//专门为火山文本类做的
文本标准数组类//封装的c++vector

Xelloss0618 发表于 2024-6-9 11:29:37

文本数组类是吴总自己写的数组类,实际成员类型是文本指针,而不是文本型,所以每次取成员,都会将文本指针复制到一个新的文本型里。
文本标准数组类是基于STL标准库里的std::vector,成员类型是文本型,取成员后只要不赋值,就不会有额外的拷贝。
但以上两者效率相差不大,用哪个都可以。如果是传文本数组给C的函数,第一种会更好使。

高性能文本数组类备注上的那句「作用和"文本数组类"一致,但性能更高.」,你可以认为是胡说的。
这个类是用来配合大色封装的 MMKV,由于大色把 MMKV 改成了 dll,也没有提供源码,根据 MMKV 的源码,我猜它内部应该是 std::vector<std::string>。
火山的文本型是 UTF-16LE 编码,MMKV 里的 std::string 是 UTF-8 编码,所以这个高性能文本数组类加入成员和取成员都要做一次编码转换,谈不上啥性能。
除了配合高性能键值表之外,不应该单独使用。

numbersir 发表于 2024-6-9 19:33:15

谢谢各位老师的解答!!
页: [1]
查看完整版本: 火山PC的各种文本数组类的区别和使用场景