Super Pi-计算10000位圆周率需要多少时间?

今天谈到CPU的计算功率,想到网上流传的Super Pi这个圆周率计算器。

两个Text,一个Timer,一个Command,就可完成Super Pi的工作~

Option Explicit
'Copyright (c) 2015,烟台大学计算机学院
'All right reserved.
'作者:邵帅
'文件:工程1.vbp
'完成时间:2015年04月03日
'版本号:v1.0
Sub getpi(Optional ByVal nums As Long = 10000)
nums = nums \ 5
Dim max As Long, laptime As Single, result() As String
Dim i, j As Long, d As Long, t, g, r, k As Long, f()
laptime = Timer
max = 10 * nums
ReDim f(1 To max)
ReDim result(nums)
result(0) = vbCrLf
For i = 1 To max
DoEvents
f(i) = 30000
Next
For j = max To 1 Step -10
t = 0
DoEvents
For i = j To 1 Step -1
DoEvents
If j = max Then
t = t + f(i) * 1000000
Else
t = t + f(i) * 100000
End If
r = 8 * i * (2 * i + 1)
f(i) = t - Int(t / r) * r
d = 2 * i - 1
t = Int(t / r) * d * d
Next
k = k + 1
result(k) = Format(Int(g + t / 100000) Mod 100000, "00000")
If k Mod 20 = 0 Then result(k) = result(k) & vbCrLf
If k Mod 200 = 0 Then result(k) = result(k) & "---[" & k * 5 & "]---" & vbCrLf
g = t Mod 100000
Next
Text1.Text = "3." & Join(result, " ")
Open "C:\1.txt" For Output As #1
Print #1, Text1.Text
Close #1
Timer1.Enabled = False
End Sub
Private Sub Command1_Click()
  Timer1.Enabled = True
  getpi Text2.Text
  MsgBox "计算完成,共用时" + s1.Caption + "秒。" & vbCrLf & "计算结果将在C:\1.txt下显示。"
End Sub

Private Sub Timer1_Timer()
  s1.Caption = s1.Caption + 1
End Sub

    

@ Mayuko

时间: 2024-12-10 04:08:15

Super Pi-计算10000位圆周率需要多少时间?的相关文章

位运算计算与位运算应用

位运算包括与,或,取反,异或,左移,右移等. 一 位运算计算 1 与运算:& 操作符&将2个数的二进制位进行与操作,2个数对应的位都为1,运算结果为1:否则运算结果为0. 比如 6&8,6的二进制为:0110   8的二进制为:1000.所以6&8 = 0000 = 0 2 或运算:| 操作符|将2个数的二进制位进行或操作,2个数对应的位有一个为1,运算结果为1:否则运算结果为0. 比如 6&8,6的二进制为:0110   8的二进制为:1000.所以6&8

虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte

#include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout << "A:A" <<endl; } virtual void getb(){ cout << "A:B" <<endl; } }; class B :public A{ public: B(){} virtual void g

计算天数差、获取当前时间、获取百分比

//计算天数差 function getDayNumber(date1, date2) { //默认格式为"20030303",根据自己需要改格式和方法 var year1 = date1.substr(0, 4); var year2 = date2.substr(0, 4); var month1 = date1.substr(4, 2); var month2 = date2.substr(4, 2); var day1 = date1.substr(6, 2); var day

树莓派进阶之路 (016) - 通过595驱动4位LED显示系统时间

模块图片,4位共阳极数码管. 我们使用树莓派wiringPi的库来通过74HC595驱动4位数码管: C 代码如下: 1 #include <wiringPi.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <stdint.h> 5 #include <time.h> 6 #define SCLK 12 7 #define RCLK 13 8 #define DIO 14 9 un

C++ 小练习,按位存储时间并获取时间

#include <iostream> using namespace std; #include<string> //按位取得年份,年份用第一个字节的前7位存储,则将该字节向右移动一位即可获得 int GetYear(const unsigned char buffer) { int mask = buffer>> 1; return mask; } //按位获取月份 传入的参数,月份的存储4个位,为第一个字节的第8位和第二个字节的前三位, //所以将第一个字节与1进

ps计算某些进程保持运行状态的时间

ps -p 14940  -o  user,pid,etime,args 大体思路: 1.我们首先找出我们需要监控的进程名称 2.通过进程名称我们找到pid 3.然后,我们使用上面的命令提取出保持运行的时间,进程名称,进程号 4.把以上信息保存到一个文件,排序整理

java下,计算算法,方法耗费的时间

//记录开始时间 long startTime=System.currentTimeMillis(); //此处为你调用的方法,算法 method(); //记录结束时间 long endTime=System.currentTimeMillis(); float excTime=(float)(endTime-startTime)/1000; System.out.println("执行时间:"+excTime+"s");

getContinueTime() JavaScript计算一个事件已进行的时间

function getContinueTime(startTime) { //当前时间与指定的时间的差值 var time = (new Date() - new Date(startTime)) / 1000, serviceTime = '', days = Math.floor(time / 3600 / 24), hours = Math.floor(time / 3600 % 24), minutes = Math.floor(time / 60 % 60), seconds = M

格林时间10位串转本地时间

string timeStamp = "1441618244"; DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(t