- 主题:爱国为的c++水平暴露了
我拿 QtCore 搞服务端编程。。
【 在 here080 (hero080) 的大作中提到: 】
: QT适合UI程序,不适合很多别的场景。
--
FROM 117.24.206.*
QString 系列很早就有 QStringRef 和 QByteArrayRef,效率上并不差。而 D-Pointer 是二进制兼容必须的妥协。
【 在 here080 (hero080) 的大作中提到: 】
: 当然不行。QString那套在现在的编译器下效率亏损太多了。
: C++是0开销抽象,可以做到比C语言更快。这是标准库必须支持的。
--
FROM 117.24.206.*
我上面有说啊。。 Qt 有 QStringRef 对应 string_view,
更有意思的是,Qt 十几年前就有这东东的。
【 在 here080 (hero080) 的大作中提到: 】
: 你要知道,新标准下有string_view,这使得使用std::string配合string_view成了效率极高的方式。
--
FROM 117.24.206.*
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.*