小编Pen*_*eng的帖子

为什么Swift在这个图像处理测试中比C慢100倍?

像许多其他开发人员一样,我对Apple的新Swift语言感到非常兴奋.Apple声称它的速度比Objective C快,可以用来编写操作系统.从我到目前为止所学到的,它是一种静态类型语言,能够精确控制确切的数据类型(如整数长度).所以它看起来像具有良好的潜在处理性能关键任务,如图像处理,对吧?

在我进行快速测试之前,这就是我的想法.结果真的让我感到惊讶.

这是C中的一个简单代码片段:

test.c的:

#include <stdio.h>
#include <stdint.h>
#include <string.h>

uint8_t pixels[640*480];
uint8_t alpha[640*480];
uint8_t blended[640*480];

void blend(uint8_t* px, uint8_t* al, uint8_t* result, int size)
{
    for(int i=0; i<size; i++) {
        result[i] = (uint8_t)(((uint16_t)px[i]) *al[i] /255);
    }
}

int main(void)
{
    memset(pixels, 128, 640*480);
    memset(alpha, 128, 640*480);
    memset(blended, 255, 640*480);

    // Test 10 frames
    for(int i=0; i<10; i++) {
        blend(pixels, alpha, blended, 640*480);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在Macbook Air 2011上编译它:

clang -O3 test.c -o test
Run Code Online (Sandbox Code Playgroud)

10帧处理时间约为0.01秒.换句话说,它需要C代码1ms来处理一帧:

$ time ./test …
Run Code Online (Sandbox Code Playgroud)

c macos performance swift

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

标签 统计

c ×1

macos ×1

performance ×1

swift ×1