Здравствуйте, anatoly1, Вы писали:
A>С++ медленнее питона при парсинге файла.
Грубое использование string, vector, sstream объектов. Время уходит на запросы памяти
в этих контейнерах. По мне так лучше сначала выделить буферы фиксированного размера,
и в процессе использовать их, с контролем переполнения. Эти буферы можно передавать
и в sstream, и в string/vector, которые будут передаваемые им элементы помещать
в эти буферы, не делая постоянные malloc.
А вообще прикольно писать парсеры не тупо на контейнерах, а примерно так:
Здравствуйте, Aртём, Вы писали:
Aё>Здравствуйте, anatoly1, Вы писали:
Aё>>> ====>>>> Copy constructor !!!
A>>Компилятор такое сейчас умеет оптимизировать. Aё>Ссылку?
Здравствуйте, anatoly1, Вы писали:
A>С++ медленнее питона при парсинге файла.
А как на питоне это делается? A>В чём может быть причина такой низкой производительности у С++?
В том, что это у тебя не С++.
Здравствуйте, anatoly1, Вы писали:
A>С++ медленнее питона при парсинге файла.
A>С++ — версия:
A>В чём может быть причина такой низкой производительности у С++?
А что-нибудь меняется, если первой строкой написать std::ios_base::sync_with_stdio(false); ?
Здравствуйте, anatoly1, Вы писали:
A>Здравствуйте, _DAle_, Вы писали:
_DA>>А что-нибудь меняется, если первой строкой написать std::ios_base::sync_with_stdio(false); ?
A>
A>error: expected constructor, destructor, or type conversion before '(' token
A>
Здравствуйте, _DAle_, Вы писали:
_DA>Первой строкой в main()
Я уже чуть выше выкладывал результат в release-режиме (в первом посте, по моей невнимательности, был дебаг-режим).
Результат с опцией std::ios_base::sync_with_stdio(false) получился таким:
Здравствуйте, smeeld, Вы писали:
S>А вообще прикольно писать парсеры не тупо на контейнерах, а примерно так:
<skipped>
А вот так проще. Используем strtok, которая для этого и предназначена. При этом не выделяется ни одного байта памяти. Правда, исходная строка портится, но это не так уж важно.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А вот так проще. Используем strtok, которая для этого и предназначена. При этом не выделяется ни одного байта памяти. Правда, исходная строка портится, но это не так уж важно.