小编Woo*_*Dev的帖子

为什么C中的结构指针(方法)比普通函数慢得多?

我最近在越来越多的项目中使用C,几乎最终创建了自己的带有结构指针的"对象实现".但是,我很好奇纯粹的功能样式(带结构)和结构之间的速度差异,这些结构在更现代的面向对象风格中调用函数指针.


我已经创建了一个示例程序,并且不确定为什么时序差异如此之大.

该程序使用两个计时器并记录完成每个任务所花费的时间(一个接一个).这不包括内存分配/解除分配,并且两种技术都以类似的方式设置(每个结构有三个整数作为结构的指针).

代码本身只是在一个for循环中重复地将三个数字加在一起,持续时间为宏LOOP_LEN中指定的持续时间.

请注意我有内联测量的函数,编译器优化从无到完全优化(/ Ox)(我在Visual Studio中将其作为纯.c文件运行).


对象样式代码

// MAGIC object 
typedef struct {

    // Properties
    int* x;
    int* y;
    int* z;

    // Methods
    void(*init)(struct magic* self, int x, int y, int z);
    int(*sum)(struct magic* self);

}magic;

// Variable init function
void* init(magic* self, int x, int y, int z) {

    // Assign variables to properties
    *self->x = x;
    *self->y = y;
    *self->z = y;

    return;

}

// Add all variables together
inline int …
Run Code Online (Sandbox Code Playgroud)

c struct pointers

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

标签 统计

c ×1

pointers ×1

struct ×1