问题列表 - 第40655页

C++性能挑战:整数到std :: string的转换

任何人都可以击败我的整数到std :: string代码的性能,链接如下?

已经有几个问题可以解释如何将整数转换为std::stringC++中的整数,例如这个,但是所提供的解决方案都没有效率.

以下是一些可用于竞争的常用方法的编译就绪代码:

流行的看法相反,boost::lexical_cast有自己的实现(白皮书)并且不使用stringstream和数字插入运算符.我真的希望看到它的性能比较,因为另一个问题表明它很悲惨.

我自己的贡献,在桌面计算机上具有竞争力,并演示了一种在嵌入式系统上全速运行的方法,与依赖整数模数的算法不同:

如果您想使用该代码,我将根据简化的BSD许可证提供(允许商业使用,需要归属).请问.

最后,该功能ltoa是非标准的,但可广泛使用.

  • ltoa版本,适用于拥有提供它的编译器的任何人(ideone没有):http://ideone.com/T5Wim

我很快就会发布我的性能测量结果.

算法规则

  • 提供将至少32位有符号和无符号整数转换为十进制的代码.
  • 产生输出作为std::string.
  • 没有与线程和信号不兼容的技巧(例如,静态缓冲区).
  • 您可以假设ASCII字符集.
  • 确保INT_MIN在绝对值无法表示的二进制补码机上测试代码.
  • 理想情况下,输出应为字符的字符与规范的C++版本使用相同的stringstream,http://ideone.com/jh3Sa,但任何事情,这显然是理解的,因为正确的号码也是OK.
  • :虽然你可以使用你想要进行比较的任何编译器和优化器选项(除了完全禁用),但代码还需要编译并在至少VC++ 2010和g ++下给出正确的结果.

希望讨论

除了更好的算法,我还想在几个不同的平台和编译器上获得一些基准测试(让我们使用MB/s吞吐量作为我们的标准测量单位).我相信我的算法代码(我知道sprintf基准测试需要一些快捷方式 - 现在已经修复)是标准的明确定义的行为,至少在ASCII假设下,但是如果你看到任何未定义的行为或输出的输出无效,请指出.

结论:

不同的算法对g ++和VC2010执行,可能是由于std::string每个算法的实现不同.VC2010显然在NRVO方面做得更好,摆脱了价值回报只对gcc有帮助.

发现代码的性能优于sprintf一个数量级. ostringstream落后50倍甚至更多.

挑战的胜利者是user434507,他在gcc上生成的代码运行速度是我自己的350%.由于SO社区的突发奇想,其他条目将被关闭.

目前(最终?)速度冠军是:

  • 对于gcc:user434507,速度比sprintf …

c++ string performance integer

118
推荐指数
6
解决办法
4万
查看次数

在在线服务器上实现Node.js.

我一直在阅读关于Node.js和做一些教程,到目前为止我很喜欢它,但是我一直试图找到在在线服务器上实现它的方法,到目前为止我还没有找到任何东西,有什么办法吗?它是否应该以我在本地安装的方式安装,但在在线服务器上?

hosting node.js

2
推荐指数
1
解决办法
1418
查看次数

将 MMX/SSE 指令移植到 AltiVec

我在 ASM 方面的经验极其有限,在 SIMD 方面的经验就更少了。

但碰巧我有以下 MMX/SSE 优化代码,我想将其移植到 AltiVec 指令以在 PPC/Cell 处理器上使用。

这可能是一个很大的问题..尽管只有几行代码,但我在尝试弄清楚这里发生的事情时遇到了无穷无尽的麻烦。

原函数:

static inline int convolve(const short *a, const short *b, int n)
{
    int out = 0;
    union {
        __m64 m64;
        int i32[2];
    } tmp;
    tmp.i32[0] = 0;
    tmp.i32[1] = 0;
    while (n >= 4) {
        tmp.m64 = _mm_add_pi32(tmp.m64,
                               _mm_madd_pi16(*((__m64 *)a),
                                             *((__m64 *)b)));
        a += 4;
        b += 4;
        n -= 4;
    }
    out = tmp.i32[0] + tmp.i32[1];
    _mm_empty();

    while (n --)
        out += (*(a++)) * (*(b++)); …
Run Code Online (Sandbox Code Playgroud)

c simd altivec mmx

3
推荐指数
1
解决办法
1112
查看次数

我可以在jsFiddle中设置Firebug断点吗?

jsFiddle通常用于在SO上进行说明和测试.当我测试/开发的JavaScript我用萤火虫 很多 -断点都是我的朋友.有没有人想出一种在他们的jsFiddle测试代码中设置Firebug断点的方法?

javascript firebug jsfiddle

14
推荐指数
1
解决办法
3017
查看次数

如何检查数组是否有重复项?

我有一个数组A.我想检查它是否包含重复值.我该怎么办?

ruby arrays

68
推荐指数
4
解决办法
5万
查看次数

是否有针对.NET 4.0的CLR分析器?

我从这里下载链接文本的CLR分析器不适用于使用.NET 4.0实现的我的应用程序.是否有.NET 4.0版本?谢谢.

clr profiler

9
推荐指数
1
解决办法
5912
查看次数

SQL:存储是/否值的最佳方法?照顾大型数据库中的性能

我有一些列,我必须存储基本上是/否值.例如,活动或非活动的用户状态.时事通讯的遗嘱状态为已故或未记录的.

好吧,我想知道(考虑有大量记录的表),如果最好的方法是将一个小的int放入char长度为1并将1设置为yes,将0设置为no.

这是正确的想法吗?或者,在使用yes,no,active,inactive,suscribed等等单词时,对数据库查询的性能没有影响.

提前致谢.

sql database performance database-design store

4
推荐指数
1
解决办法
1万
查看次数

Rabin-Karp字符串匹配不匹配

我一直在使用C++中的Rabin-Karp字符串匹配函数,但我没有得到任何结果.我有一种感觉,我没有正确计算一些值,但我不知道哪一个.

原型

void rabinKarp(string sequence, string pattern, int d, int q);
Run Code Online (Sandbox Code Playgroud)

功能实现

void rabinKarp(string sequence, string pattern, int d, int q)
{
    //d is the |?|
    //q is the prime number to use to lessen spurious hits
    int n = sequence.length(); //Length of the sequence
    int m = pattern.length(); //Length of the pattern
    double temp = static_cast<double> (m - 1.0);
    double temp2 = pow(static_cast<double> (d), temp); //Exponentiate d
    int h = (static_cast<int>(temp2)) % q; //High Order Position of an m-digit …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm string-matching rabin-karp

5
推荐指数
2
解决办法
1937
查看次数

如何使用自定义模块覆盖默认的magento cms主页条目?

我正在尝试使用自定义模块作为第一页,当您点击magento安装时,我目前在主页中有{{block type ="namespace_module/block"模板"path/to/template.phtml"}} cms条目,但不幸的是它没有调用模板或我请求的模块,我现在正在试图找出是否可以使用自定义模块(由indexController.php控制)来预测cms主页页面输入.

这背后有两个原因,原因1,它将为我提供更大的灵活性来扩展索引页面,2,它将允许我比css/js更灵活,我希望包含在该特定页面上.

如果有人知道让自定义模块对cms主页进行预测的解决方案,那对我自己和整个社区来说将是一个巨大的帮助,因为许多人都不知道如何实现这一点.

感谢您提供的任何帮助.瑞安

overriding module magento content-management-system

4
推荐指数
1
解决办法
2916
查看次数

Objective C - 对NSArray进行子类化

我正在尝试子类化NSArray,但它在尝试访问count方法时崩溃了应用程序.我知道这NSArray是一个 类集群.

  • 但是,这是什么意思?
  • 有没有能够继承NSArray的工作?

我知道我可以简单地子类化NSObject并将我的数组作为实例变量,但我宁愿继承子类NSArray.

编辑: 理由:我创建一个纸牌游戏,我有一个类Deck应该继承NSMutableArray有一些额外的方法(-shuffle,-removeObjects:,-renew等),我认为它会寻找更清洁的子类NSArray,而不是一个变种.

cocoa subclass objective-c nsarray class-cluster

5
推荐指数
2
解决办法
4585
查看次数