谁能超越我的整数到 std::string 转换代码的性能?
问题:
高效转换将整数转换为 std::string 是一个挑战,引发了各种方法的创建。本文探讨了不同的方法并邀请提交来比较其性能。
方法:
常见方法包括:
-
“C 方式”:使用stringstream。
-
sprintf:通常建议提高性能。
-
Boost 的 lexical_cast:有自己的实现,不依赖于 stringstream。
-
Ben 的算法:针对两个桌面进行了优化和嵌入式系统。
-
ltoa(非标准):广泛可用,但其使用可能受到限制。
规则:
提交内容应遵守特定要求指南:
- 将有符号和无符号 32 位整数转换为小数。
- 以 std::string 形式生成输出。
- 确保与线程和信号的兼容性.
- 假设一个 ASCII 字符集。
- 处理在二进制补码机器上正确地显示 INT_MIN。
- 输出应与使用字符串流的规范 C 版本相同。
- 在 VC 2010 和 g 上编译并执行。
结果:
获胜者提交的内容显示出显着的性能改进:
- Eugene Smith 的代码:比 g 上的 sprintf 快 8 倍 (http://ideone.com/0uhhX)
- Timo 的代码:比 g 上的 sprintf 快 8 倍
Timo 的代码:比Visual C 上的 sprintf (http://ideone.com/VpKO3)
以上是您能胜过这个整数到字符串的转换代码吗?的详细内容。更多信息请关注PHP中文网其他相关文章!