素数を数えて落ち着くんだ
バッチが思った以上に時間が掛かってハラハラドキドキした経験はないですか?
そんな時は素数を数えて落ち着きましょう。
みなさんmonoプロジェクトはご存知でしょうか?
UNIX系Linux系MacでC#を動かしちゃおうと言うプロジェクトなんですが、
今回はmono(2.6.4)でコンパイル、実行したPGとVC#でコンパイルしたPGでどれぐらい実行速度が変わるか計測してみます。
計測方法は同じスペックのPCを使ってLinux、Windowsで違いを測って見たかったのですが、いろいろ大人の事情ってやつで、Windows 版monoをインストールし、交互に実行時間を計測します。
1、まずコードを書きます。
1〜1000000の間で素数を求めるプログラムを書きます。
実行時間を計るためにSystem.Diagnosticsusing.Stopwatchを使ったのですが、monoでコンパイルエラーになったのでコメントアウトしました。
時間計測はbatファイルで行います。
2、コンパイルします。
VC#はMicrosoft Visual Studio 2008 Expressでビルドを行いました。
monoのコンパイルは
mcs Program.cs
ビルドが終わるとProgram.exeができます。
3、バッチを作ります。
mono
monoの実行結果
monoって落ち着いてますね。
※mono 実行速度で検索を掛けてみるとmono早いよ!って言うのもちらほら見るので今回の環境では遅かったのかな。。。
.NET2.0のクラスを使ったらコンパイルできない現象がおきたり、私自信がmonoをあまり理解できていない部分も多々あるので実務でmonoを使ってみよって方はご自身の環境でテストしてみてください。
今回使用したwindows版はこちらから
http://www.go-mono.com/mono-downloads/download.html
Windows版は.netランタイムをインストールしないと動かないみたいです。
そんな時は素数を数えて落ち着きましょう。
みなさんmonoプロジェクトはご存知でしょうか?
UNIX系Linux系MacでC#を動かしちゃおうと言うプロジェクトなんですが、
今回はmono(2.6.4)でコンパイル、実行したPGとVC#でコンパイルしたPGでどれぐらい実行速度が変わるか計測してみます。
計測方法は同じスペックのPCを使ってLinux、Windowsで違いを測って見たかったのですが、いろいろ大人の事情ってやつで、Windows 版monoをインストールし、交互に実行時間を計測します。
1、まずコードを書きます。
1〜1000000の間で素数を求めるプログラムを書きます。
実行時間を計るためにSystem.Diagnosticsusing.Stopwatchを使ったのですが、monoでコンパイルエラーになったのでコメントアウトしました。
時間計測はbatファイルで行います。
- using
System; - using
System.Collections.Generic; - using
System.Linq; - using
System.Text; - //using
System.Diagnostics; - namespace
ConsoleApplication1 - {
class Program { public static void Main(string[] args) { //Stopwatch sw = new Stopwatch(); //sw.Start(); const int max = 1000000; bool[] prime = new bool[max]; prime[0] = false; prime[1] = false; int count = 0; for (int i = 2; i < max; i++){ prime[i] = true; } for (int i = 2; (i * i) < max; i++){ if (prime[i] == true){ for (int y = (i << 1); y < max; y += i){ if (prime[y] == true){ prime[y] = false; count++; } } } } for (int i = 2; i < max; i++){ if (prime[i] == true) Console.WriteLine(i); } //sw.Stop(); //long millisec = sw.ElapsedMilliseconds; //Console.WriteLine(millisec); } } - }
2、コンパイルします。
VC#はMicrosoft Visual Studio 2008 Expressでビルドを行いました。
monoのコンパイルは
mcs Program.cs
ビルドが終わるとProgram.exeができます。
3、バッチを作ります。
mono
- set
date_tmp=%date:/=% - set
time_tmp=%time: =0% - set
yyyy=%date_tmp:~0,4% - set
yy=%date_tmp:~2,2% - set
mm=%date_tmp:~4,2% - set
dd=%date_tmp:~6,2% - set
hh=%time_tmp:~0,2% - set
mi=%time_tmp:~3,2% - set
ss=%time_tmp:~6,2% - set
sss=%time_tmp:~9,2% - set
datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss% - set
time_tmp= - set
date_tmp= - echo
%datetime% >> log.txt - mono
Program.exe - set
date_tmp=%date:/=% - set
time_tmp=%time: =0% - set
yyyy=%date_tmp:~0,4% - set
yy=%date_tmp:~2,2% - set
mm=%date_tmp:~4,2% - set
dd=%date_tmp:~6,2% - set
hh=%time_tmp:~0,2% - set
mi=%time_tmp:~3,2% - set
ss=%time_tmp:~6,2% - set
sss=%time_tmp:~9,2% - set
datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss% - set
time_tmp= - set
date_tmp= - echo
%datetime% >> log.txt
- set
date_tmp=%date:/=% - set
time_tmp=%time: =0% - set
yyyy=%date_tmp:~0,4% - set
yy=%date_tmp:~2,2% - set
mm=%date_tmp:~4,2% - set
dd=%date_tmp:~6,2% - set
hh=%time_tmp:~0,2% - set
mi=%time_tmp:~3,2% - set
ss=%time_tmp:~6,2% - set
sss=%time_tmp:~9,2% - set
datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss% - set
time_tmp= - set
date_tmp= - echo
%datetime% >> log.txt - Program.exe
- set
date_tmp=%date:/=% - set
time_tmp=%time: =0% - set
yyyy=%date_tmp:~0,4% - set
yy=%date_tmp:~2,2% - set
mm=%date_tmp:~4,2% - set
dd=%date_tmp:~6,2% - set
hh=%time_tmp:~0,2% - set
mi=%time_tmp:~3,2% - set
ss=%time_tmp:~6,2% - set
sss=%time_tmp:~9,2% - set
datetime=%yyyy%%mm%%dd%%hh%%mi%%ss%%sss% - set
time_tmp= - set
date_tmp= - echo
%datetime% >> log.txt
monoの実行結果
- 2010060401200013
- 2010060401201214
- 2010060401551672
- 2010060401551674
monoって落ち着いてますね。
※mono 実行速度で検索を掛けてみるとmono早いよ!って言うのもちらほら見るので今回の環境では遅かったのかな。。。
.NET2.0のクラスを使ったらコンパイルできない現象がおきたり、私自信がmonoをあまり理解できていない部分も多々あるので実務でmonoを使ってみよって方はご自身の環境でテストしてみてください。
今回使用したwindows版はこちらから
http://www.go-mono.com/mono-downloads/download.html
Windows版は.netランタイムをインストールしないと動かないみたいです。
コメント
コメントフォーム
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



あと、2行目から14行目も計測時刻に含まれていますね。
コンピュータの比較計測のはじめの一歩からやり直しましょうね。