- 主题:爱国为的c++水平暴露了
我上面有说啊。。 Qt 有 QStringRef 对应 string_view,
更有意思的是,Qt 十几年前就有这东东的。
【 在 here080 (hero080) 的大作中提到: 】
: 你要知道,新标准下有string_view,这使得使用std::string配合string_view成了效率极高的方式。
--
FROM 117.24.206.*
这个不行的,太重了。
string_view的关系是可以搞定c string,还可以当成常量用。
另外,QString不是COW吗?那QStringRef的生命周期就很容易成为一个大坑啊……
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我上面有说啊。。 Qt 有 QStringRef 对应 string_view,
: 更有意思的是,Qt 十几年前就有这东东的。
--
FROM 76.126.252.*
创建一个空的QString都有引用计数的开销,多线程下效率不咋的
【 在 libgcc (巭孬嫑夯昆勥茓) 的大作中提到: 】
: QString是设计的最好的c++string
: std::string根本就不能叫string,就是个vector<char>,基本功能都没有谈效率没意义
: std::wstring这玩意有人用?
: ...................
--
FROM 222.131.156.15
qstring本身就是gui里用的,效率低点就低点,接口无敌可弥补
非ui线程用qstring的不算多,一般也就文件系统路径什么的,有io的情况这点性能损失也忽略不计了
【 在 jjfz 的大作中提到: 】
: 创建一个空的QString都有引用计数的开销,多线程下效率不咋的
:
--
FROM 119.103.128.*
我否真没怎么用过qstringref,因为qstring是cow的感觉有点多余
何况绝大部分情况根本就不在乎这点效率
【 在 here080 的大作中提到: 】
: 这个不行的,太重了。
: string_view的关系是可以搞定c string,还可以当成常量用。
: 另外,QString不是COW吗?那QStringRef的生命周期就很容易成为一个大坑啊……
: ...................
--
FROM 119.103.128.*
创建时为什么会有引用计数开销?难道所有空的共享一个空对象?
【 在 jjfz 的大作中提到: 】
: 创建一个空的QString都有引用计数的开销,多线程下效率不咋的
--
FROM 58.37.57.*
QString 使用是 D-Pointer 以及 COW 技术,有两种空的状态:
1. isNull() { d == SharedNull; }
2. isEmpty() { size() == 0; }
所以上面说的空字符串也有两种开销:
QString() ==> 基本上没开销,设置 d = SharedNull 搞定,
QString("") ==> 申请一个内存块,设置 size = 0,约等同于创建一个 shared_ptr<int> 对象并设置为零
【 在 ilovecpp (cpp) 的大作中提到: 】
: 创建时为什么会有引用计数开销?难道所有空的共享一个空对象?
--
FROM 117.24.206.*
QString::splitRef() 切出来的字符串是 QStringRef 并不实际复制数据,节省空间,也节省了复制的开销。
【 在 libgcc (巭孬嫑夯昆勥茓) 的大作中提到: 】
: 我否真没怎么用过qstringref,因为qstring是cow的感觉有点多余
: 何况绝大部分情况根本就不在乎这点效率
--
FROM 117.24.206.*
说 QString 不快,是和 stl 比,正常使用吊打 java/go/python 等等一大票语言。那些语言都能用下去,为什么 qt 就不行呢。
【 在 libgcc (巭孬嫑夯昆勥茓) 的大作中提到: 】
: qstring本身就是gui里用的,效率低点就低点,接口无敌可弥补
: 非ui线程用qstring的不算多,一般也就文件系统路径什么的,有io的情况这点性能损失也忽略不计了
--
FROM 117.24.206.*
创建shared_ptr也没有同步开销啊,应该不会像楼上说的在多线程下效率不佳。
【 在 hgoldfish 的大作中提到: 】
: QString 使用是 D-Pointer 以及 COW 技术,有两种空的状态:
: 1. isNull() { d == SharedNull; }
: 2. isEmpty() { size() == 0; }
: ...................
--
FROM 58.37.57.*