任何人都可以击败我的整数到std :: string代码的性能,链接如下?
已经有几个问题可以解释如何将整数转换为std::string
C++中的整数,例如这个,但是所提供的解决方案都没有效率.
以下是一些可用于竞争的常用方法的编译就绪代码:
与流行的看法相反,boost::lexical_cast
有自己的实现(白皮书)并且不使用stringstream
和数字插入运算符.我真的希望看到它的性能比较,因为另一个问题表明它很悲惨.
我自己的贡献,在桌面计算机上具有竞争力,并演示了一种在嵌入式系统上全速运行的方法,与依赖整数模数的算法不同:
如果您想使用该代码,我将根据简化的BSD许可证提供(允许商业使用,需要归属).请问.
最后,该功能ltoa
是非标准的,但可广泛使用.
我很快就会发布我的性能测量结果.
std::string
.INT_MIN
在绝对值无法表示的二进制补码机上测试代码.stringstream
,http://ideone.com/jh3Sa,但任何事情,这显然是理解的,因为正确的号码也是OK.除了更好的算法,我还想在几个不同的平台和编译器上获得一些基准测试(让我们使用MB/s吞吐量作为我们的标准测量单位).我相信我的算法代码(我知道sprintf
基准测试需要一些快捷方式 - 现在已经修复)是标准的明确定义的行为,至少在ASCII假设下,但是如果你看到任何未定义的行为或输出的输出无效,请指出.
不同的算法对g ++和VC2010执行,可能是由于std::string
每个算法的实现不同.VC2010显然在NRVO方面做得更好,摆脱了价值回报只对gcc有帮助.
发现代码的性能优于sprintf
一个数量级. ostringstream
落后50倍甚至更多.
挑战的胜利者是user434507,他在gcc上生成的代码运行速度是我自己的350%.由于SO社区的突发奇想,其他条目将被关闭.
目前(最终?)速度冠军是:
sprintf …
使用opencv,如何将视频分割成图像序列?
我如何拆分它以使输出成为一系列图像?
刚拿到我的Pebble,我正在玩SDK.我是C的新手,但我知道Objective-C.那么有没有办法创建这样的格式化字符串?
int i = 1;
NSString *string = [NSString stringWithFormat:@"%i", i];
Run Code Online (Sandbox Code Playgroud)
我不能用sprintf
,因为没有malloc
.
我基本上要显示int
与text_layer_set_text(&countLayer, i);
我想int to char
在不使用itoa()
函数的情况下在C中转换*.
因为在我的Linux系统上我的itoa
功能不存在.我正在使用此处找到的代码
我想在使用Linux的嵌入式设备上运行此功能.
所以我正在寻找不使用itoa
.
我sprintf
也想使用它,因为它只用于打印.
所以任何身体请帮我弄清楚这个问题.
谢谢
c ×3
c++ ×2
string ×2
embedded ×1
int ×1
integer ×1
linux ×1
opencv ×1
pebble-sdk ×1
pebble-watch ×1
performance ×1
video ×1