分析_mm_setzero_ps和{0.0f,0.0f,0.0f,0.0f}

时间:2016-12-21 17:00:27

标签: c++ visual-studio profiling sse

编辑:正如Cody Gray在他的评论中指出的那样,使用残疾优化进行分析是完全浪费时间。那我该如何接受这个测试?

Microsoft XMVectorZero如果定义_XM_SSE_INTRINSICS_使用_mm_setzero_ps{0.0f,0.0f,0.0f,0.0f}则使用Disabled (/Od)。我决定检查胜利有多大。所以我在版本x86和配置属性&gt; C / C ++&gt;优化&gt;优化设置为constexpr __int64 loops = 1e9; inline void fooSSE() { for (__int64 i = 0; i < loops; ++i) { XMVECTOR zero1 = _mm_setzero_ps(); //XMVECTOR zero2 = _mm_setzero_ps(); //XMVECTOR zero3 = _mm_setzero_ps(); //XMVECTOR zero4 = _mm_setzero_ps(); } } inline void fooNoIntrinsic() { for (__int64 i = 0; i < loops; ++i) { XMVECTOR zero1 = { 0.f,0.f,0.f,0.f }; //XMVECTOR zero2 = { 0.f,0.f,0.f,0.f }; //XMVECTOR zero3 = { 0.f,0.f,0.f,0.f }; //XMVECTOR zero4 = { 0.f,0.f,0.f,0.f }; } } int main() { fooNoIntrinsic(); fooSSE(); } 时使用了以下程序。

#!/usr/bin/env bash

    BUCKET="s3://my-s3-bucket-eu-west-1/list/"
    FILE_NAME=`aws s3 ls $BUCKET  | sort | tail -n 1 | awk '{print $4}'`
    TARGET_FILE_PATH=target/datdump/
    TARGET_FILE=${TARGET_FILE_PATH}localData.json.gz

    echo $FILE_NAME
    echo $TARGET_FILE

    aws s3 sync $BUCKET $TARGET_FILE_PATH --exclude "*" --include "*$FILE_NAME*"

    cp target/datdump/$FILE_NAME $TARGET_FILE

我首先运行程序两次,只有零和第二次,所有行都没有注释。在第一种情况下内在失败,在第二个内在是明显的赢家。所以,我的问题是:

  • 为什么内在并不总是赢?
  • 我使用的探查器是否适合进行此类测量?

enter image description here

enter image description here

0 个答案:

没有答案