gpt4 book ai didi

QByteArray 转换的 Qt 优化

转载 作者:行者123 更新时间:2023-12-03 16:55:13 25 4
gpt4 key购买 nike

我写了一个函数来将一些二进制数据的十六进制字符串表示形式(如 x00)转换为数据本身。

如何改进这段代码?

QByteArray restoreData(const QByteArray &data, const QString prepender = "x")
{
QByteArray restoredData = data;

return QByteArray::fromHex(restoredData.replace(prepender, ""));
}

最佳答案

How to improve this code?

优化前的基准测试。不要过早优化。

重点之外:为什么要优化它?

1) 如果您真的很关心性能,而从性能的角度来看这些微不足道的代码很重要,那么您首先就不会使用 Qt,因为与优化良好的框架相比,Qt 本身就很慢。

2) 如果您不太关心性能,那么您应该牢记可读性和可维护性作为主要原则,在这种情况下您的代码就可以了。

你没有展示任何真实世界的例子,也没有展示你为什么要优化。这感觉像是一个学术问题,对我来说没有多大实际用处。了解更多关于动机的信息会很有趣。

话虽这么说,可以在您的代码中完成几个改进项,它们也是优化,但话又说回来:它不是为了优化而完成的,而更像是逻辑原因。

1) Prepender 是个坏名字;在英语中通常称为“前缀”。

2) 您希望使用 QChar 而不是 QString 作为字符。

3) 同样,对于替换,您希望使用 '' 而不是字符串式的 ""公式。

4) 即使它是 CoW(隐式共享),我也会通过引用而不是值语义来传递这样的类。

5) 我什至不会在这里为前缀使用参数,因为它总是相同的,所以它并不真正符合变量的定义。

6) 无需显式创建临时变量。

7) 使函数内联。

因此,你会写这样的东西:

QByteArray restoreData(QByteArray data)
{
return QByteArray::fromHex(data.replace('x', ''));
}

关于QByteArray 转换的 Qt 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com