標題:
一億個 加法運算,大概需要 8.9 秒鐘
[打印本頁]
作者:
sjgau
時間:
2013-10-23 11:12
標題:
一億個 加法運算,大概需要 8.9 秒鐘
Sub 計時碼錶()
Dim byou1, byou2 As Double
Dim i As Long
Dim sum As Double
' integer 只能計算到 32767, 超過的話,程式會當掉
' long 只能計算到 2147483647, 超過的話,程式會當掉
' double 可以計算到 10^ +308 左右
' MsgBox "按下確定按鈕後開始計時"
byou1 = Timer
sum = 0#
For i = 1 To 100000000
sum = sum + i
Next i
' MsgBox "再按一次確定按鈕停止計時"
byou2 = Timer
MsgBox "經過的時間為 " & byou2 - byou1 & " 秒, " & sum
' 一億個 加法運算,大概需要 8.9 秒鐘,比C++慢了很多
End Sub
作者:
sunnyso
時間:
2013-10-23 20:52
我的電腦只要5.2秒
作者:
sunnyso
時間:
2013-10-23 20:54
請明白, VBA 比C慢是正常的, 大家的用途大不一樣
作者:
myleoyes
時間:
2013-10-23 21:27
回復
2#
sunnyso
前輩!
不會吧!小弟的只要2.9296875
這是怎麼回事呢?!!
作者:
ML089
時間:
2013-10-23 23:02
我的舊電腦竟然可以跑 2.05秒
CPU
[email protected]
作者:
sunnyso
時間:
2013-10-24 01:09
我的是core T9300
作者:
sjgau
時間:
2013-10-25 11:52
Function time1() As Long
Dim t1 As Double
Dim t2 As Long
t1 = Timer
t2 = Int(t1 * 1000# + 0.5)
' get milli- seconds
time1 = t2
End Function
Function time2(t1 As Long) As Double
Dim t2 As Long
Dim dt As Double
t2 = time1()
dt = (t2 - t1) / 1000#
' get seconds
' dt must >= 0.0
If (dt < 0#) Then
dt = dt + 1# * 24 * 60 * 60
End If
time2 = dt
End Function
Sub test1125()
Dim no As Long, t1 As Long, t2 As Long, i As Long
Dim dt As Double, ct As Integer
Dim sum As Double
no = 100000000
ct = 5
While (no > 10)
ct = ct + 1
t1 = time1()
sum = 0#
For i = 1 To no
sum = sum + i
Next i
dt = time2(t1)
Cells(ct, 1) = no
Cells(ct, 2) = sum
Cells(ct, 3) = dt
no = no / 2
Wend
MsgBox ("Done! ")
End Sub
複製代碼
回復
6#
ML089
作者:
ML089
時間:
2013-10-25 13:45
回復
8#
sjgau
公司電腦 I5
[email protected]
跑 1.918秒
與家裡電腦(低階CPU)的速度不會差異很多
作者:
sjgau
時間:
2013-10-27 08:20
#if 0
s1= 1382833070, s2= 778
s2 < 0, . . .
s1= 4, s2= 812
sum= 5.000000E+017
請按任意鍵繼續 . . .
#endif
// ----------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <sys/timeb.h>
int main(int argc, char *argv[])
{
struct timeb now;
int s1, s2;
ftime(&now);
s1= now.time;
s2= now.millitm;
printf("s1= %d, s2= %d \n", s1, s2);
// system("pause");
// -------------------------------------------
double sum;
int no, i;
no= 1000000000;
sum= 0.0;
for (i=1;i<=no;i++) {
sum= sum + i;
}
ftime(&now);
s1= now.time - s1;
s2= now.millitm - s2;
if (s2 < 0) {
printf("\n s2 < 0, . . . \n");
s2+= 1000;
s1--;
}
printf("\n s1= %d, s2= %d \n", s1, s2);
printf(" sum= %.6lE \n", sum);
system("pause");
return 0;
}
複製代碼
回復
1#
sjgau
作者:
sjgau
時間:
2013-10-27 08:21
C 語言 程式設計,執行 十億個 家法運算,
只需要 4.8秒鐘
作者:
Brandy
時間:
2013-10-27 09:17
回復
11#
sjgau
我的excel只要1.73秒,比你的C++快:D [attach]16482[/attach]
難道用2013比較快嗎,我發現EXCEL2013執行VBA常常會當掉,但是存成2003格式再來跑就很順
但是以上是用EXCEL2013直接執行的結果
用2013抓網頁資料比較常會當....怪怪難道是用win7 64位元的比較不相容嗎 我2013也是灌64位元的
作者:
sjgau
時間:
2013-10-30 21:48
我本來以為 Excel VBA 是interpreter,
我發現 我錯了
他 應該是 compiler
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)