首页 > 代码库 > 类的构造及初始化效率对比
类的构造及初始化效率对比
基础数据结构:
struct A { int a; int b; int c; int d; int e; int f; int g; };
初始化次数:const int MAX_LOOP_NUM = 100000000;
第一种方式: 无初始化
struct A { A() { } int a; int b; int c; int d; int e; int f; int g; };
for(int index = 0; index < MAX_LOOP_NUM; ++index) { A a; }
运行时间:288ms
第二种方式:无初始化
struct A { int a; int b; int c; int d; int e; int f; int g; };
for(int index = 0; index < MAX_LOOP_NUM; ++index) { A a; }
运行时间:293ms
第三种方式:
for(int index = 0; index < MAX_LOOP_NUM; ++index) { A a = {0}; }
运行时间:701ms
第四种方式:
for(int index = 0; index < MAX_LOOP_NUM; ++index) { A a; ::memset(&a, 0, sizeof(a)); }
运行时间:835ms
第五种方式:
struct B { B() { a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; g = 0; } private: int a; int b; int c; int d; int e; int f; int g; };
for(int index = 0; index < MAX_LOOP_NUM; ++index) { B b; }
运行时间:1790ms
第六种方式:
struct C { C() : a(0), b(0), c(0), d(0), e(0), f(0), g(0) { } private: int a; int b; int c; int d; int e; int f; int g; };
for(int index = 0; index < MAX_LOOP_NUM; ++index) { C c; }
运行时间:1821
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。