08/06/08 18:21:12
オレなんて、いまだに 3.1 を使ってるぜ。
XP まで動いたけど、今度 Vista で動かしてみよう。
180:デフォルトの名無しさん
08/06/17 09:09:54
男前!ホレた!
さすがに XP のスタイル対応は無理だよね。
181:デフォルトの名無しさん
08/06/18 14:24:02
やばい、C# に浮気しそう…。
182:デフォルトの名無しさん
08/10/28 21:52:11
>>180
.manifest ファイルで誤魔化してる。
183:デフォルトの名無しさん
08/10/29 04:20:50
それが普通なんじゃないの?
Cでもmanifestだろう
184:デフォルトの名無しさん
08/10/31 05:06:21
>>182
VCL 使ったアプリで単に manifest ファイル付けてもエラーになったりしない?
XP Theme Manager は、3はサポートしてないと思ったんでね。
185:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/10 00:51:00
DelphiとVBの差はまぁそんなもんだろ。.NETのやつはやりようによってはもっと早くなるんじゃね?
たとえばそのループをさらに何回かまわしてみるとか。
187:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/10 10:57:01
こんなに違うもんかい?
exe をダブルクリックしてからの時間じゃないよね、当然。
189:デフォルトの名無しさん
08/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
08/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
08/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:デフォルトの名無しさん
08/12/15 23:36:26
VC++は最適化入れてないだろ?
193:デフォルトの名無しさん
08/12/15 23:38:33
最近のコンパイラはint64の演算で自動的にSIMD使ってくれるんか?
194:デフォルトの名無しさん
08/12/16 02:47:51
>>190は全部大文字で書くのをやめれや
醜くて見にくいわ
195:190
08/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:デフォルトの名無しさん
08/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
08/12/16 04:28:09
と実行結果。
1000000007 素数
1000000009 素数
1000000021 素数
1000000033 素数
--- J# 2005 ---end---1000000050 time: 1811
198:196
08/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個数の内の素数。
08/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