Добрый вечер. Столкнулся с такой проблемой, QByteArray & append ( const char * str ) выполняется достаточно быстро, а QByteArray & append ( const char * str, int len ) не особенно. Наверное связано с тем чтог в первом случае создается только ссылка, а во втором глубокое копирование...не знаю. Есть альтернативы побыстрее? Спасибо.
Не вижу, где второй вариант может заметно тормозить, по сравнению с первым.
C++ (Qt)
QByteArray& QByteArray::append(const char *str)
{
if (str) {
int len = qstrlen(str);
if (d->ref != 1 || d->size + len > d->alloc)
realloc(qAllocMore(d->size + len, sizeof(Data)));
memcpy(d->data + d->size, str, len + 1); // include null terminator
d->size += len;
}
return *this;
}
QByteArray &QByteArray::append(const char *str, int len)
{
if (len < 0)
len = qstrlen(str);
if (str && len) {
if (d->ref != 1 || d->size + len > d->alloc)
realloc(qAllocMore(d->size + len, sizeof(Data)));
memcpy(d->data + d->size, str, len); // include null terminator
d->size += len;
d->data[d->size] = '\0';
}
return *this;
}