相关疑难解决方法(0)

SSE42和STTNI - PcmpEstrM比PcmpIstrM慢两倍,是真的吗?

我正在尝试使用SSE42和STTNI指令并得到奇怪的结果 - PcmpEstrM(使用显式长度字符串)比PcmpIstrM(隐式长度字符串)运行慢两倍.

  • 在我的i7 3610QM上,差异是2366.2毫秒,而1202.3毫秒 - 97%.
  • i5 3470上差异不是那么大,但仍然显着= 3206.2毫秒与2623.2毫秒--22%.

两者都是"常春藤桥" - 奇怪的是他们有如此不同的"差异"(至少我看不出他们的规格有任何技术差异 - http://www.cpu-world.com/Compare_CPUs/Intel_AW8063801013511,Intel_CM8063701093302 /).

英特尔64和IA-32架构优化参考手册提到了PcmpEstrM和PcmpIstrM的相同吞吐量= 11和延迟= 3.因此,我预计两者的表现相似.

问:差异是我实际设计/预期的,还是我以错误的方式使用这些指令?

下面是我的虚拟测试场景(VS 2012).逻辑非常简单 - 扫描16MB文本以查找匹配字符.由于干草堆和针头串都没有包含零终结器 - 我希望E和I具有相似的性能.

PS:我尝试在intel的开发论坛上发布这个问题,但他们将其识别为垃圾邮件:(

#include "stdafx.h"
#include <windows.h>
#define BEGIN_TIMER(NAME)                       \
    {                                           \
        LARGE_INTEGER   __freq;                 \
        LARGE_INTEGER   __t0;                   \
        LARGE_INTEGER   __t1;                   \
        double          __tms;                  \
        const char*     __tname = NAME;         \
        char            __tbuf[0xff];           \
        \
        QueryPerformanceFrequency(&__freq);     \
        QueryPerformanceCounter(&__t0);         
#define END_TIMER()                             \ …
Run Code Online (Sandbox Code Playgroud)

c++ performance sse sse4

7
推荐指数
1
解决办法
822
查看次数

对于memcmp,SSE4.2字符串指令比SSE2快多少?

这是我的代码汇编程序

你能用c ++嵌入它并检查SSE4吗?速度快

我非常希望看到如何进入SSE4的发展.或者根本不担心他?我们检查一下(我没有SSSE3以上的支持)

{ sse2 strcmp WideChar 32 bit }
function CmpSee2(const P1, P2: Pointer; len: Integer): Boolean;
asm
    push ebx           // Create ebx
    cmp EAX, EDX      // Str = Str2
    je @@true        // to exit true
    test eax, eax   // not Str
    je @@false     // to exit false
    test edx, edx // not Str2
    je @@false   // to exit false
    sub edx, eax              // Str2 := Str2 - Str;
    mov ebx, [eax]           // get Str 4 byte
    xor …
Run Code Online (Sandbox Code Playgroud)

x86 assembly sse micro-optimization sse4

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

标签 统计

sse ×2

sse4 ×2

assembly ×1

c++ ×1

micro-optimization ×1

performance ×1

x86 ×1