1 名前:デフォルトの名無しさん [2007/04/25(水) 01:16:57 ] 最近までDelphi使ってたんだが今日ちょっとVC++使ってみた 全部個人的な見方だが Delphiの長所 コンパイル早すぎて噴いたwwwww Delphiの短所 ファイルの容量がでかすぎ(´・ω・`) VC++の長所 コンポの初期UIがOfficeXPスタイル VC++の短所 コンパイル速度遅すぎだろwww
182 名前:デフォルトの名無しさん [2008/10/28(火) 21:52:11 ] >>180 .manifest ファイルで誤魔化してる。
183 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 04:20:50 ] それが普通なんじゃないの? Cでもmanifestだろう
184 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 05:06:21 ] >>182 VCL 使ったアプリで単に manifest ファイル付けてもエラーになったりしない? XP Theme Manager は、3はサポートしてないと思ったんでね。
185 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 23:13:30 ] FOR I :=1 TO 1000000000 DO BEGIN L:=K MOD I; END; こういう、10億回ループの時間計測すると、 Delphi 1秒3 で、VB,C#、V++(2005)はいずれも14秒ほどで、10倍も違う。 こんなに違うものかな?
186 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 00:51:00 ] DelphiとVBの差はまぁそんなもんだろ。.NETのやつはやりようによってはもっと早くなるんじゃね? たとえばそのループをさらに何回かまわしてみるとか。
187 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 01:25:53 ] 自分ところでやってみた Debug Release VC++2005 3013 0(たぶん最適化されて端折られた) VC#2005 2620 2117 VB2005 2712 2097 Delphi6 3125 462 BCB6 3064 453
188 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 10:57:01 ] こんなに違うもんかい? exe をダブルクリックしてからの時間じゃないよね、当然。
189 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 21:51:14 ] var I, L: Integer; Time: DWORD; begin Time := timeGetTime(); L := 0; for I := 1 to 1000000000 do L := L xor I; Time := timeGetTime() - Time; WriteLn(Time); end; // int I, L; DWORD Time; Time = timeGetTime(); L = 0; for(I = 1; I <= 1000000000; I++) L = L ^ I; Time = timeGetTime() - Time; std::cout << Time << std::endl; // てめえらの結果書けや
190 名前:185 mailto:sage [2008/12/15(月) 22:43:37 ] 素数を求めるプログラムで処理時間を計測 した。(※メイン部分のみ、VB,C#,VC++もこれと同等なプログラム) DELPHIが速いのはわかるけど、VBがC#、VC++より速いのは不思議な気がする。 2秒153 TURBO-DELPHI 2秒392 VB 2005 2秒934 C# 2005 3秒155 VC++ 2005 ソースはDELPHIのもの、(ベンチマークが目的なのでアルゴリズムは最速ではない。) VAR I,J,N : INTEGER ; K,L,M : INT64 ; BEGIN; K:=1000000000; FOR I:=1 TO 50 DO BEGIN N:=0; M:= I + K ; FOR J:= 2 TO 2000000 DO BEGIN L:=J; IF M MOD L = 0 THEN BEGIN IF M <> L THEN N:=N+1; END; END; IF N = 0 THEN Memo1.Lines.ADD ( INTTOSTR(M) + ' は素数') ; END; END;
191 名前:190 mailto:sage [2008/12/15(月) 22:50:16 ] ちなみに、すべて、windowsフォーム アプリケーションでテスト 実行結果 1000000007 は素数 1000000009 は素数 1000000021 は素数 1000000033 は素数 -------------------END--- 1000000050 2153 MS TURBO-DELPHI INT64 1000000007 は素数 1000000009 は素数 1000000021 は素数 1000000033 は素数 ----- END ----------- 1000000050 Time: 2,392.00ms VB2005 INT64 1000000007 1000000009 1000000021 1000000033 -------end------1000000050 time 2934 C# 2005 1000000007 は素数 1000000009 は素数 1000000021 は素数 1000000033 は素数 --- end ---- 1000000050 Time: 00:00:03.1550000 VC++ 2005
192 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 23:36:26 ] VC++は最適化入れてないだろ?
193 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 23:38:33 ] 最近のコンパイラはint64の演算で自動的にSIMD使ってくれるんか?
194 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 02:47:51 ] >>190 は全部大文字で書くのをやめれや 醜くて見にくいわ
195 名前:190 mailto:sage [2008/12/16(火) 04:15:21 ] 同じものを J# でも作ってみたら、劇的に速かったので、パソコンを再起動してクリーンな状態なせいかもと思って全部再度テストしてみたら、 1732 ms turbo-delphi 2006 1811 ms J# 2005 2219 ms C# 2005 2223 ms VC++ 2005 2239 ms VB 2005 という結果になった、delphiが結局1番速いが、J#も肉薄してる。あとの3兄弟は同じくらい。 ちなみに、変数をすべてintにして測ったら、どれも 850ms程度で横並びだった。
196 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 04:25:26 ] 参考までに、VS2005 の J# のソース private void button1_Click(Object sender, System.EventArgs e) { int i, j, n; long k, l, m; String s; m = 0; k=100; s = this.textBox1.get_Text(); // textBox1 から 1000000000 を入力して k に代入 k = Long.valueOf(s).longValue(); this.textBox2.AppendText("-------start-----" + System.Convert.ToString(k)+ "\r\n"); long start = System.currentTimeMillis(); for (i = 1; i <= 50; i++) { m=i+k; n=0; for (j=2;j<=2000000;j++) // ここもルートm までで良いが、あえて時間をかけるために、200万回にしてる。ちなみにこれだと4兆までの素数が正確に求められる。 { if (m % j == 0) { if (m != j) { n=n+1;} //break; // ここで break すると劇的に速く計算できるが、ベンチマークテストなのでコメント化 } } if (n == 0) this.textBox2.AppendText(System.Convert.ToString(m) + " 素数 " + "\r\n"); } long stop = System.currentTimeMillis(); this.textBox2.AppendText("--- J# 2005 ---end---" + System.Convert.ToString(m) + " time: " + System.Convert.ToString(stop - start) + "\r\n"); }
197 名前:196 mailto:sage [2008/12/16(火) 04:28:09 ] と実行結果。 1000000007 素数 1000000009 素数 1000000021 素数 1000000033 素数 --- J# 2005 ---end---1000000050 time: 1811
198 名前:196 mailto:sage [2008/12/16(火) 05:36:07 ] 196のプログラムで1京(10の16乗)から1000個の数字の中の素数をすべて求めた。 (kに10000000000000000 を代入、割る数字を100000000までにして、割り切れたらbreakするようにして実行) -------start-----10000 0000 0000 0000 10000000000000061 素数 10000000000000069 素数 10000000000000079 素数 10000000000000099 素数 10000000000000453 素数 10000000000000481 素数 10000000000000597 素数 10000000000000613 素数 10000000000000639 素数 10000000000000669 素数 10000000000000753 素数 10000000000000793 素数 10000000000000819 素数 10000000000000861 素数 10000000000000897 素数 10000000000000909 素数 10000000000000931 素数 10000000000000949 素数 10000000000000957 素数 10000000000000991 素数 --- J# 2005 ---end---10000000000001000 time: 89690
199 名前:ちなみに、その前の1000個数の内の素数。 mailto:sage [2008/12/16(火) 05:40:07 ] 9999999999999011 素数 (素数が多いとより時間がかかる) 9999999999999049 素数 9999999999999137 素数 9999999999999167 素数 9999999999999187 素数 9999999999999199 素数 9999999999999253 素数 9999999999999301 素数 9999999999999337 素数 9999999999999343 素数 9999999999999349 素数 9999999999999389 素数 9999999999999391 素数 9999999999999409 素数 9999999999999431 素数 9999999999999479 素数 9999999999999517 素数 9999999999999571 素数 9999999999999593 素数 9999999999999623 素数 9999999999999631 素数 9999999999999641 素数 9999999999999643 素数 9999999999999671 素数 9999999999999809 素数 9999999999999817 素数 9999999999999851 素数 9999999999999887 素数 9999999999999917 素数 9999999999999937 素数 --- J# 2005 ---end---10000000000000000 time: 122777