Разминка для мозгов: перевод десятичного числа в двоичную систему

Оптимизации отключены для обоих компиляторов. Со включенной оптимизацией вообще очень сложно сравнивать.

Но интерес был в том, как свести к минимуму эти тормоза.

А я думал оптимизировать алгоритм перевода.

Ну как бы и то, и то.

В сторону нестандартного аллокатора как-то не смотрел. Думаешь что-то можно выжать, если в функции используется только конструктор std::string(const char *) для возврата результата? При условии, что возвращаемая строка не будет ссылаться на статическую переменную-буфер функции.

Думаешь что-то можно выжать, если в функции используется только конструктор std::string(const char *) для возврата результата?

Думаю, что можно, но только на большом очень большом кол-ве вызовов,
особенно при загруженной системе с малым количеством свободной памяти.
В обычной же ситуации, скорее всего, мы получим замедление.
Как-то исследовал разные аллокаторы,
так вот оказалось, что стандартный работает лучше всех,
во всяком случае, во всех тестах что я проводил,
если не указывать контейнерам аллокатор, то оно работает быстрее.
Никакие аллокаторы из буста и других библиотек не одолели,
хотя, думаю, можно подобрать узкие тесты, где они победят.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.