为什么C ++在这段代码中比C快得多?

时间:2016-12-14 05:35:27

标签: gcc optimization g++

我的C代码是:

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

int main(void){
  char* a = (char*)malloc(200000);
  for (int i = 0;i< 100000;i++){
  strcat(a,"b");
  }
  printf("%s",a);
}

我的C ++代码是

#include <iostream>
int main(void){
  std::string a = "";
  for (int i = 0;i< 100000;i++){
    ¦ a+="b";
  }

  std::cout<<a;
}

在我的机器上,C代码运行大约5秒钟,而在我的机器上,C ++代码运行在0.025!秒。

现在,C代码不检查溢出,没有C ++开销,类,但是比我的C ++代码慢了很多。

在Raspberry Pi上使用-O3编译的gcc / g ++ 6.2.0。

1 个答案:

答案 0 :(得分:0)

@erwin是对的。

当我将代码更改为

NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
NSString *dateStarted = [NSString stringWithFormat:@"/Date(%.0f)/", interval * 1000];

运行大约需要.012秒(主要是打印大屏幕)。

Shlemiel's the painter's algorithm在工作!