Автор: Алекс Кэш (25.11.2011 в 17:25)
Сделал тестовый вариант по Вашему совету.
fprintf все равно быстрее.
Видимо формировать строку размером 200 Мб (или даже несколько строк поменьше) из моих данных - это долго. Я пытался использовать следущие варианты преобразований:
1. sprintf(szbuff, "%.7g", X);
2. С помощью библиотеки std::stringstream - это вообще кошмар сколько времени занимает (втрое больше!)
Правда только сейчас узнал, что можно использовать библиотеку boost
( boost::lexical_cast<std::string>( значение ) ), может она быстрее преобразует? просто уже надоело разбираться, наверняка все равно fprintf() не побьет.
При этом сам вывод строки действительно проходит быстро, но потери времени на преобразование и формирование строки сводят на нет все преимущество.
К тому же все равно теряется весь смысл использования fout в плане удобства: вывод какой-то кривой получается и сложный.
В итоге решил использовать fprintf - хоть и не очень безопасно и надо код переделывать, но все же удобнее, быстрее, менее затратно в плане оперативки. Или я не прав?