C言語は処理が速いと言われることを、体感できた回になりました。
こういうCPU負荷が同一の時に言語別に処理時間を計測することは、サービス構築時にどの言語をチョイスするかという議論の基本的なゴールになるので、自分の中で有意義理論を確立できた内容になり、個人的に満足してます。
まあ、通常は、複数言語を構築して比べるなんてことはあまりしないですからね。
ソースコード
#include <stdio.h>
int getPrimeNumber(int num){
int flg = 0;
for(int i=2; i<num-1; i++){
if(num % i == 0){
flg = i;
break;
}
}
return flg;
}
int main(){
for(int i=2; i<=100; i++){
int res = getPrimeNumber(i);
if(res == 0){
printf("%d \n",i);
}
}
return 0;
}
実行
$ gcc -o prime_number prime_number.c
$ time ./prime_number
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
real 0m0.008s
user 0m0.002s
sys 0m0.002s
今回も時間計測を行ってみました。
100 : 0.008s
1000 : 0.007s
10000 : 0.044s
100000 : 1.630s
1000000 : 3m7.838s
今回の分岐点は、100万上限でしたね。
解説
C言語の配列は固定長
毎回苦しめられますが、C言語で配列を初めに定義する時、配列の最大値を定義しておかなければいけません。
今回のように、最終的に個数が何個になるか分からないような場合は、C言語の苦手分野ということで、AWKと同じく、結果を表示する仕様にして、配列保持はしないようにしました。
リンク
色々なプログラム言語でアルゴリズム学習
0 件のコメント:
コメントを投稿