素数を数えて落ち着くんだ
バッチが思った以上に時間が掛かってハラハラドキドキした経験はないですか?
そんな時は素数を数えて落ち着きましょう。
みなさん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ランタイムをインストールしないと動かないみたいです。
コメント
コメントフォーム
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













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