Велик для форматирования строк
Это
Код:
char buffer[512]; Решение: Код:
class StringBuilder { Код:
StringBuilder( "DIPs: " ) << ruDIPs() << "\nTCs: " << ruTextureUsedPerFrame() << "\nFPS: " << fpsCounter.fps; |
Ответ: Велик для форматирования строк
Цитата:
Так что если в данном случае профайлер показывает больше скорости, это не значит что в других случаях будет также. Ещё можно предположить что выделять сразу 512 байт видимо много, ещё лучше подобрать длину строк или использовать расшаренную память (как обычно делается внутри строк и потоков С++) то можно повысить скорость. Сам я обычно использую std::stringstream и не оборачиваю его в какой-то класс. Нужно иметь ввиду что ::sync_with_stdio статический и влияет на все потоки сразу -- его можно вызвать один раз, за пределами класса, как следствие и необходимость класса отпадает. А вообще в выводе строк главное удобство, это же не рендер строк, а только их компоновка, я не думаю что оно требует таких умственных затрат (я имею ввиду что-то более сложное чем чистый stringstream). |
Ответ: Велик для форматирования строк
Подобный велик помогает убрать такое говно:
Код:
stringstream data; Код:
doSomething( StringBuilder( "foo" ) << 123 << "bar" ); |
Ответ: Велик для форматирования строк
Можно создать макрос, или создать статический метод вместо класса -- тогда не будет оверхеда на создание/удаление класса.
Можно создать логгер, который существует всё время, а внутри него stringstream, тоже существующий всё время. А добавлять данные так: logger.getStream() << "ololo" << value1 << someClass; doSomething( logger.getString() ); |
Ответ: Велик для форматирования строк
Цитата:
Код:
doSomething( stringstream("foo") << 123 << "bar" ); Против класса ничего не имею, просто аргумент не очень. |
Ответ: Велик для форматирования строк
Ну как минимум то что нужно делать вот так если в doSomething передается строка:
Код:
doSomething( (stringstream("foo") << 123 << "bar").str() ); |
Часовой пояс GMT +4, время: 07:09. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot