Будут ли ссылки на C ++ 0x RValue или другие функции влиять на производительность потоков? - PullRequest
9 голосов
/ 10 декабря 2010

Множество профилирования показывает, что потоки C ++ - не лучший способ выполнения манипуляций с файлами или текстовыми строками, когда требуется производительность (скорость).Тем не менее, стандартные потоки являются хорошим способом обеспечения безопасности типов.

Из того, что я прочитал, большая часть проблемы заключается в том, что реализации потоков должны: 1) создавать / копировать множество маленьких объектов 2arnt полностью универсальный (не управляете char и wchar одинаково?) и т.д.Существуют ли другие функции, которые позволят повысить производительность, например, достичь производительности printf ()?

Есть ли немедленное влияние?Или нам придется ждать новых реализаций?Или нам все еще нужна новая (подобная STL) потоковая библиотека?

1 Ответ

3 голосов
/ 10 декабря 2010

Вас могут заинтересовать некоторые сравнения производительности в мой вопрос здесь .Даже функции самого низкого уровня в API потоков стандартной библиотеки C ++ невероятно медленны в обычных реализациях, и, просматривая исходный код, например, класса stringbuf Visual C ++, я не вижу копирования небольших временных объектов.Таким образом, rvalue-ссылки вряд ли могут сильно помочь.

AFAICT, основная причина медлительности iostreams на C ++ заключается в том, что разработчики библиотек застряли с мыслью, что ввод-вывод является узким местом, поэтому нет смысла беспокоитьсяо производительности библиотеки ввода / вывода.Но ввод / вывод явно не является узким местом.

...