- Liittynyt
- 05.11.2017
- Viestejä
- 102
Tulipa tuolla pelit - puolella puheeksi C vs C++. Joten päätin mitata käytännössä.
Käänsin flangin C ja C++ - kääntäjillä. g++:lla ei käänny ilman -permissive - lippua. Lisäksi tulee 1000 warningia. Tämä koska flang on C-ohjelma. C:llä ei varoituksia -pedantic -Wall. flang - koodi oli molemmissa täysin sama. g++:lla löysin itseasiassa muutaman bugin, joista gcc ei varoittanut ollenkaan.
Ajoin brutaalin euler_problems.flang 6-kertaa. Laitoin komennon millä käänsin flangin. Samat optimoinnit molemmissa. Se pistää tietokoneen polvilleen. Niinkuin pitääkin. flang/euler_problems.flang at master · mystikkogames/flang · GitHub
Otin netin pois ja kaikki muut ohjelmat, jotta testi olisi tasapuolinen.
C++:n RUN#4: Varmistaakseni muutin vielä .c-filut .c++:ksi, mutta oli ohjelmia jo auki. Mutta samoissa ajoissa.
Lopputuloksena: C:n paras aika: 151.239s ja C++:n 151.280s. Joten käytännössä samat ajat. Mutta C-ohjelmat kannattaa ajella C- ja C++-kääntäjillä bugien takia.
C++
RUN#1: g++ -O3 -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.769s
euler_8 # 0.038s
euler_9 # 0.891s
euler_10 # 113.614s
euler_11 # 0.019s
euler_12 # 4.258s
euler_13 # 0.077s
euler_14 # 24.853s
euler_15 # 1.612s
euler_16 # 0.768s
euler_17 # 0.026s
euler_18 # 1.695s
euler_32 # 2.407s
euler problems # 153.222s
RUN#2: g++ -s -O2 -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.161s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.803s
euler_8 # 0.041s
euler_9 # 0.919s
euler_10 # 117.314s
euler_11 # 0.019s
euler_12 # 4.396s
euler_13 # 0.077s
euler_14 # 25.351s
euler_15 # 1.629s
euler_16 # 0.757s
euler_17 # 0.026s
euler_18 # 1.651s
euler_32 # 2.401s
euler problems # 157.585s
RUN#3: g++ -Ofast -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.767s
euler_8 # 0.037s
euler_9 # 0.887s
euler_10 # 112.215s
euler_11 # 0.019s
euler_12 # 4.187s
euler_13 # 0.076s
euler_14 # 24.827s
euler_15 # 1.579s
euler_16 # 0.764s
euler_17 # 0.026s
euler_18 # 1.573s
euler_32 # 2.129s
euler problems # 151.280s
RUN#4: conversion *.c -> *.c++ : g++ -Ofast -fpermissive -Wall *.c++ -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.152s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.784s
euler_8 # 0.038s
euler_9 # 0.911s
euler_10 # 118.174s
euler_11 # 0.019s
euler_12 # 4.249s
euler_13 # 0.077s
euler_14 # 25.226s
euler_15 # 1.599s
euler_16 # 0.759s
euler_17 # 0.025s
euler_18 # 1.696s
euler_32 # 2.597s
euler problems # 158.348s
C
RUN#1: gcc -O3 -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.153s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.771s
euler_8 # 0.037s
euler_9 # 0.885s
euler_10 # 113.996s
euler_11 # 0.019s
euler_12 # 4.299s
euler_13 # 0.078s
euler_14 # 25.288s
euler_15 # 1.601s
euler_16 # 0.754s
euler_17 # 0.026s
euler_18 # 1.593s
euler_32 # 2.419s
euler problems # 153.961s
RUN#2: gcc -s -O2 -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.817s
euler_8 # 0.039s
euler_9 # 0.905s
euler_10 # 118.086s
euler_11 # 0.019s
euler_12 # 4.266s
euler_13 # 0.078s
euler_14 # 25.270s
euler_15 # 1.586s
euler_16 # 0.767s
euler_17 # 0.026s
euler_18 # 1.601s
euler_32 # 2.261s
euler problems # 157.914s
RUN#3: gcc -Ofast -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.153s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.788s
euler_8 # 0.038s
euler_9 # 0.899s
euler_10 # 112.252s
euler_11 # 0.019s
euler_12 # 4.233s
euler_13 # 0.076s
euler_14 # 24.673s
euler_15 # 1.598s
euler_16 # 0.738s
euler_17 # 0.025s
euler_18 # 1.566s
euler_32 # 2.141s
euler problems # 151.239s
Käänsin flangin C ja C++ - kääntäjillä. g++:lla ei käänny ilman -permissive - lippua. Lisäksi tulee 1000 warningia. Tämä koska flang on C-ohjelma. C:llä ei varoituksia -pedantic -Wall. flang - koodi oli molemmissa täysin sama. g++:lla löysin itseasiassa muutaman bugin, joista gcc ei varoittanut ollenkaan.
Ajoin brutaalin euler_problems.flang 6-kertaa. Laitoin komennon millä käänsin flangin. Samat optimoinnit molemmissa. Se pistää tietokoneen polvilleen. Niinkuin pitääkin. flang/euler_problems.flang at master · mystikkogames/flang · GitHub
Otin netin pois ja kaikki muut ohjelmat, jotta testi olisi tasapuolinen.
C++:n RUN#4: Varmistaakseni muutin vielä .c-filut .c++:ksi, mutta oli ohjelmia jo auki. Mutta samoissa ajoissa.
Lopputuloksena: C:n paras aika: 151.239s ja C++:n 151.280s. Joten käytännössä samat ajat. Mutta C-ohjelmat kannattaa ajella C- ja C++-kääntäjillä bugien takia.
C++
RUN#1: g++ -O3 -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.769s
euler_8 # 0.038s
euler_9 # 0.891s
euler_10 # 113.614s
euler_11 # 0.019s
euler_12 # 4.258s
euler_13 # 0.077s
euler_14 # 24.853s
euler_15 # 1.612s
euler_16 # 0.768s
euler_17 # 0.026s
euler_18 # 1.695s
euler_32 # 2.407s
euler problems # 153.222s
RUN#2: g++ -s -O2 -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.161s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.803s
euler_8 # 0.041s
euler_9 # 0.919s
euler_10 # 117.314s
euler_11 # 0.019s
euler_12 # 4.396s
euler_13 # 0.077s
euler_14 # 25.351s
euler_15 # 1.629s
euler_16 # 0.757s
euler_17 # 0.026s
euler_18 # 1.651s
euler_32 # 2.401s
euler problems # 157.585s
RUN#3: g++ -Ofast -fpermissive -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.767s
euler_8 # 0.037s
euler_9 # 0.887s
euler_10 # 112.215s
euler_11 # 0.019s
euler_12 # 4.187s
euler_13 # 0.076s
euler_14 # 24.827s
euler_15 # 1.579s
euler_16 # 0.764s
euler_17 # 0.026s
euler_18 # 1.573s
euler_32 # 2.129s
euler problems # 151.280s
RUN#4: conversion *.c -> *.c++ : g++ -Ofast -fpermissive -Wall *.c++ -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.152s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.784s
euler_8 # 0.038s
euler_9 # 0.911s
euler_10 # 118.174s
euler_11 # 0.019s
euler_12 # 4.249s
euler_13 # 0.077s
euler_14 # 25.226s
euler_15 # 1.599s
euler_16 # 0.759s
euler_17 # 0.025s
euler_18 # 1.696s
euler_32 # 2.597s
euler problems # 158.348s
C
RUN#1: gcc -O3 -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.153s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.771s
euler_8 # 0.037s
euler_9 # 0.885s
euler_10 # 113.996s
euler_11 # 0.019s
euler_12 # 4.299s
euler_13 # 0.078s
euler_14 # 25.288s
euler_15 # 1.601s
euler_16 # 0.754s
euler_17 # 0.026s
euler_18 # 1.593s
euler_32 # 2.419s
euler problems # 153.961s
RUN#2: gcc -s -O2 -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.001s
euler_3 # 0.154s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.817s
euler_8 # 0.039s
euler_9 # 0.905s
euler_10 # 118.086s
euler_11 # 0.019s
euler_12 # 4.266s
euler_13 # 0.078s
euler_14 # 25.270s
euler_15 # 1.586s
euler_16 # 0.767s
euler_17 # 0.026s
euler_18 # 1.601s
euler_32 # 2.261s
euler problems # 157.914s
RUN#3: gcc -Ofast -Wall *.c -o flang
euler_1 # 0.003s
euler_2 # 0.000s
euler_3 # 0.153s
euler_4 # 0.032s
euler_5 # 0.005s
euler_6 # 0.000s
euler_7 # 2.788s
euler_8 # 0.038s
euler_9 # 0.899s
euler_10 # 112.252s
euler_11 # 0.019s
euler_12 # 4.233s
euler_13 # 0.076s
euler_14 # 24.673s
euler_15 # 1.598s
euler_16 # 0.738s
euler_17 # 0.025s
euler_18 # 1.566s
euler_32 # 2.141s
euler problems # 151.239s