Private Type Vector x As Single y As Single End Type
Dim Shared bi32BitInfo As BITMAPINFO Dim Shared Map(767, 1023) As Long Declare Sub DrawFractal(vPos As Vector, vDir As Vector) Declare Sub DrawLine(vP1 As Vector, vP2 As Vector) Declare Sub Main() Dim Shared QSpeed As Double
Main '<- вход
Private Function QTime() As Double Dim QD As LARGE_INTEGER, t As Double QueryPerformanceCounter @QD If QD.LowPart < 0 Then t = QD.LowPart + 4294967296 Else t = QD.LowPart If QD.HighPart < 0 Then t = t + (QD.HighPart + 4294967296) * 4294967296 Else t = t + QD.HighPart * 4294967296 QTime = t * QSpeed End Function
Private Sub QTimeInit() Dim QD As LARGE_INTEGER QueryPerformanceFrequency @QD If QD.LowPart < 0 Then QSpeed = QD.LowPart + 4294967296 Else QSpeed = QD.LowPart If QD.HighPart < 0 Then QSpeed = QSpeed + (QD.HighPart + 4294967296) * 4294967296 Else QSpeed = QSpeed + QD.HighPart * 4294967296 QSpeed = 1 / QSpeed End Sub
Private Sub Main() Dim vP As Vector, vD As Vector Dim t1 As Single, t2 As Single Dim msg As MSG
Private Sub DrawLine(vP1 As Vector, vP2 As Vector) Dim x As Single, y As Single, k As Single, dx As Single, dy As Single
dx = vP2.x - vP1.x dy = vP2.y - vP1.y If Abs(dx) < Abs(dy) Then k = dx / dy If vP2.y > vP1.y Then y = vP1.y x = vP1.x While y < vP2.y Map(y, x) = &H50BB50 x = x + k y = y + 1 Wend Else y = vP2.y x = vP1.x While y < vP1.y Map(y, x) = &H40FF30 x = x + k y = y + 1 Wend End If Else k = dy / dx If vP2.x > vP1.x Then x = vP1.x y = vP1.y While x < vP2.x Map(y, x) = &HA0AF20 y = y + k x = x + 1 Wend Else x = vP2.x y = vP1.y While x < vP1.x Map(y, x) = &H609F30 y = y + k x = x + 1 Wend End If End If End Sub
Лист симпатичный, но как тест честно говоря никакой. Задействовано одно ядро, тест очень короткий, результаты прыгают и т.д. Предлагаю создать адекватный бенчмарк (включая к примеру излюбленные решения линейных уравнений) и прогнать его на разных компиляторах (не только на бейсике). Думаю, это интересно будет многим при выборе языка программирования. Кстати пробовал ранее делать бенч, в качестве интерфейса использовал твою библиотеку. Назвать его адекватным тоже сложно – менее мощные процессоры показывали более высокий результат:
Code
#Include "window9.bi"
Dim As integer hwnd,event hwnd=OpenWindow("DEPOzit - Тест CPU",200,10,500,500) WindowStartDraw(hwnd) fillrectdraw(40,40,&hffffff) FontDraw(LoadFont("arial",22)) TextDraw(150,100,"Please Wait...",&hffffff) FontDraw(LoadFont("arial",14)) TextDraw(40,140,"Постарайтесь не совершать никаких действий",&hffffff) FontDraw(LoadFont("arial",18)) TextDraw(80,170,"Время тестирования: 30 сек",&hffffff) StopDraw
Dim Shared tim As double Dim Shared a As LongInt Dim Shared a2 As LongInt Dim Shared a3 As LongInt Dim Shared a4 As LongInt Dim Shared rez As Integer Dim Shared z As Integer tim=Timer Sub ONE(param As Any Ptr) Dim a11 As Double Dim b11 As Double Dim x11 As Double
Do If tim+30<=Timer Then Exit Do a+=1 a11=1+Rnd*10000 b11=1+Rnd*10000 x11=(-1)*b11/a11 Loop End Sub
Sub ONE2(param As Any Ptr) Dim a21 As Double Dim b21 As double Dim x21 As Double Do a2+=1 a21=1+Rnd*10000 b21=1+Rnd*10000 x21=(-1)*b21/a21 If z=1 Then Exit Do Loop End Sub
Sub ONE3(param As Any Ptr) Dim a31 As Double Dim b31 As double Dim x31 As Double Do a3+=1 a31=1+Rnd*10000 b31=1+Rnd*10000 x31=(-1)*b31/a31 If z=1 Then Exit Do Loop End Sub
Sub ONE4(param As Any Ptr) Dim a41 As Double Dim b41 As double Dim x41 As Double Do a4+=1 a41=1+Rnd*10000 b41=1+Rnd*10000 x41=(-1)*41/41 If z=1 Then Exit Do Loop End Sub
Dim As Any Ptr ID Dim As Any Ptr ID2 Dim As Any Ptr ID3 Dim As Any Ptr ID4
Предлагаю создать адекватный бенчмарк (включая к примеру излюбленные решения линейных уравнений) и прогнать его на разных компиляторах (не только на бейсике). Думаю, это интересно будет многим при выборе языка программирования.
Ты же видел в тесте приняли участие только три бейсика, адаптировать пример под остальные даже никто не стал. Ну а учить другие бейсики (даже в рамках примера) из-за одного теста желания нет. А про другие языки.... Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
Так не обязательно сложный пример, а наоборот – тот который можно адаптировать под любой язык, не требуя при этом глубоких знаний языка. Думаю все это реально и не так сложно.
В этом я мало смыслю, если знаешь напиши пример. Я бывает пробую разные компиляторы. Потихоничку можно примерчик адаптировать на различные диалекты и записывать результат, а может кто еще поможет. Накопится побольше компиляторов, можно будет на википедию закинуть табличкой. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…