我读到某处sprintf比stringstream更快。有没有人有任何经验?如果是,为什么会更快。

最佳答案

std::ostringstream不是所必需的,但较慢,但在实现时通常较慢。 FastFormat's website has some benchmarks

流的标准库设计比snprintf支持更多的内容。该设计应具有可扩展性,并包括由公开公开的方法调用的protected virtual方法。这使您可以从流类之一派生,并确保如果重载protect ed方法,您将获得所需的行为。我相信编译器可以避免virtual函数调用的开销,但是我不知道有任何编译器可以这样做。

另外,流操作通常在内部使用可增长的缓冲区。这意味着相对较慢的内存分配。

关于c++ - 为什么snprintf比ostringstream更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/445315/

10-13 06:17