Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Бенчмарк Добавлено: 17.02.09 01:06  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Есть такая наука и предмет - метрология. Задание у меня такое - сделать некую "бенчмарк карту". Нужно написать прогу которая сделает 3 теста системы:
> на вычисления
> на запись\чтение
> на отображение (рисование) чего либо на экране
каждый тест должен выполняться секунды по 2-3, то есть не слишком уж долгий и не слишком быстрый.

Кааароче вопрос - посоветуйте ЧТО конкретно за тесты можно было бы сделать. Прогу напишу на vb6, ибо на си долго думать придется, а запариваться с этим очень не хочется

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #1
Добавлено: 17.02.09 09:11
Ну на вычисление - тут подойдет любая формула действий в 10 в цикле. Чтение-запись можно по бинарному доступу - так можно точнее определять например по 10кб считывать/записывать.

Ответить

Номер ответа: 2
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #2
Добавлено: 17.02.09 09:22
А с рисованием разброс большой:
например можно использовать line - просто но не покажет возможности видео-карты
api-функция уже может
Ну а ДиректХ по моему может протестить в аппаратом режиме достаточно

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 17.02.09 11:57
Вычисления: целочисленные, векторные, с плавающей точкой, с большим числом условных переходов, с большим числом вызовов
Память: доступ на запись, на чтение; произвольный, последовательный
Винт: на запись, на чтение; произвольный, последовательный
Рисование: только DirectX

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 17.02.09 19:55
не не не! какой еще директ икс, вы чо)) уж лучше пусть будет какой нибудь банальный StretchBlt)
учить directX ради первйо лабы по метрологии - это извините бред. Чо нить на экране будет отображаться красивенько и норм=)

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 18.02.09 00:12
Написал фигню походу, вроде бы не особо объективно получаеццо.
Command1, pic_src с картинкой, pic_dst, везде scalemode=pixel, autoredraw=true
  1. Option Explicit
  2. Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
  3. Private Declare Function StretchBlt Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  4.  
  5. Private Sub Command1_Click()
  6. Dim t1 As Long, t2 As Long, t3 As Long
  7. Call reset
  8. Dim path As String
  9. Do
  10.     path = InputBox("Ââåäèòå ïóòü ê ðàáî÷åé äèðåêòîðèè:", , App.path)
  11.     path = IIf(Right$(path, 1) = "\", path, path & "\")
  12.     If Dir(path, vbDirectory) <> "" And path Like "?:\*" Then Exit Do
  13. Loop
  14. t1 = testCalc
  15. t2 = testRdWr(path)
  16. t3 = testDraw
  17. Call drawSysTable
  18. Call drawTable(t1 / 1000, t2 / 1000, t3 / 1000)
  19. End Sub
  20.  
  21. Private Sub Form_Load()
  22.     Call reset
  23.     pic_src.Move -pic_src.Width
  24.     Call Randomize
  25. End Sub
  26.  
  27. Private Sub drawSysTable()
  28.     Print ""
  29.     Print "&#209;&#232;&#241;&#242;&#229;&#236;&#224;                &#194;&#251;&#247;&#232;&#241;&#235;. &#215;&#242;.\&#199;&#224;&#239;.&#208;&#232;&#241;&#238;&#226;&#224;&#237;.&#209;&#240;.&#227;&#229;&#238;&#236;."
  30.     Print ""
  31.     Print "Athlon X2 5600, &#206;&#199;&#211; 4&#195;&#225;4,359   8,078   4,282   5,322461"
  32.     Print "Radeon HD2600XT 1&#195;&#225;                                    "
  33.     Print ""
  34.     Print "Athlon 1300, &#206;&#199;&#211; 384&#204;&#225; ?       ?       ?       ?       "
  35.     Print "GeForce2 Pro 32&#204;&#225;                                      "
  36.     Print ""
  37.     DoEvents
  38. End Sub
  39.  
  40. Private Sub drawTable(ByVal test1 As Single, ByVal test2 As Single, ByVal test3 As Single)
  41.     Dim gmid As Single, str As String, str2 As String * 8
  42.     gmid = (test1 * test2 * test3) ^ (1 / 3)
  43.     str = "&#221;&#242;&#224; &#241;&#232;&#241;&#242;&#229;&#236;&#224;            [test1.][test2.][test3.][middl.]"
  44.     str2 = test1
  45.     str = Replace$(str, "[test1.]", str2)
  46.     str2 = test2
  47.     str = Replace$(str, "[test2.]", str2)
  48.     str2 = test3
  49.     str = Replace$(str, "[test3.]", str2)
  50.     str = Replace$(str, "[middl.]", gmid)
  51.     Print str
  52.     Print ""
  53.     DoEvents
  54. End Sub
  55.  
  56. Private Sub reset()
  57.     Call Cls
  58.     Print , "<------ Press any key to start tests", vbNewLine
  59.     DoEvents
  60. End Sub
  61.  
  62. Private Function testCalc() As Long
  63. On Error GoTo 1:
  64.     Dim a As Double, b As Double, c As Double, D As Double, x(1 To 2) As Double
  65.     Dim i As Long, j As Long, tick As Long, tick_d As Long
  66.     Print ">> &#210;&#229;&#241;&#242; 1: &#240;&#229;&#248;&#229;&#237;&#232;&#229; &#234;&#226;&#224;&#228;&#240;&#224;&#242;&#237;&#251;&#245; &#243;&#240;&#224;&#226;&#237;&#229;&#237;&#232;&#233; (10000000)"
  67.     
  68.     tick = GetTickCount
  69.     For i = 1 To 10000000
  70.         If D >= 0 Then
  71.         End If
  72.     Next i
  73.     tick_d = GetTickCount - tick
  74.     Print , "&#194;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#229; &#239;&#243;&#241;&#242;&#238;&#227;&#238; &#246;&#232;&#234;&#235;&#224;:", tick_d
  75.     DoEvents
  76.     
  77.     tick = GetTickCount
  78.     For i = 1 To 10000000
  79.         a = (Rnd + 0.1) * 10
  80.         b = (Rnd + 0.1) * 10
  81.         c = (Rnd + 0.1) * 10
  82.         D = b ^ 2 - 4 * a * c
  83.         If D >= 0 Then
  84.             x(1) = (-b + Sqr(D)) / 2
  85.             x(2) = (-b - Sqr(D)) / 2
  86.         End If
  87.     Next i
  88.     tick = GetTickCount - tick - tick_d
  89.     Print , "&#194;&#240;&#229;&#236;&#255; &#226;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#255;:", tick
  90.     testCalc = tick
  91. Exit Function
  92. 1: MsgBox "error in testCalc() function"
  93. End Function
  94.  
  95. Private Function testRdWr(ByVal path As String) As Long
  96. On Error GoTo 1:
  97.     Dim file As Integer, i As Long, dat As String * 1024, tick As Long, tick_d As Long
  98.     Print ">> &#210;&#229;&#241;&#242; 2: &#247;&#242;&#229;&#237;&#232;&#229;/&#231;&#224;&#239;&#232;&#241;&#252;"
  99.     
  100.     tick = GetTickCount
  101.     For i = 1 To 102400
  102.     Next i
  103.     For i = 1 To 5
  104.     Next i
  105.     tick_d = GetTickCount - tick
  106.     Print , "&#194;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#229; &#239;&#243;&#241;&#242;&#238;&#227;&#238; &#246;&#232;&#234;&#235;&#224;:", tick_d
  107.     DoEvents
  108.     
  109.     file = FreeFile
  110.     Open path & "bench" For Binary Access Read Write As file
  111.         dat = Space(1024)
  112.         tick = GetTickCount
  113.         For i = 1 To 51200
  114.             Put file, , dat
  115.         Next i
  116.         Do Until EOF(file)
  117.             Get file, , dat
  118.         Loop
  119.     Close file
  120.     For i = 1 To 5
  121.         Call FileCopy(path & "bench", path & "bench" & i)
  122.         Call Kill(path & "bench" & i)
  123.     Next i
  124.     Call Kill(path & "bench")
  125.     tick = GetTickCount - tick - tick_d
  126.     Print , "&#194;&#240;&#229;&#236;&#255; &#226;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#255;:", tick
  127.     testRdWr = tick
  128. Exit Function
  129. 1: MsgBox "error in testRdWr() function"
  130. End Function
  131.  
  132. Private Function testDraw() As Long
  133. On Error GoTo 1:
  134.     Dim i As Long, tick As Long, tick_d As Long, tmp As Long
  135.     Print ">> &#210;&#229;&#241;&#242; 3: &#240;&#232;&#241;&#238;&#226;&#224;&#237;&#232;&#229;"
  136.     
  137.     tick = GetTickCount
  138.     For i = 1 To 1000
  139.          tmp = pic_dst.ScaleWidth * (1 - Abs(Sin(i))) \ 2
  140.          tmp = pic_dst.ScaleHeight * (1 - Abs(Sin(i))) \ 2
  141.          tmp = pic_dst.ScaleWidth * Abs(Sin(i))
  142.          tmp = pic_dst.ScaleWidth * Abs(Sin(i))
  143.     Next i
  144.     tick_d = GetTickCount - tick
  145.     Print , "&#194;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#229; &#239;&#243;&#241;&#242;&#238;&#227;&#238; &#246;&#232;&#234;&#235;&#224;:", tick_d
  146.     DoEvents
  147.     
  148.     For i = 1 To 1000
  149.         StretchBlt pic_dst.hdc, pic_dst.ScaleWidth * (1 - Abs(Sin(i))) \ 2, pic_dst.ScaleHeight * (1 - Abs(Sin(i))) \ 2, pic_dst.ScaleWidth * Abs(Sin(i)), pic_dst.ScaleWidth * Abs(Sin(i)), pic_src.hdc, 0, 0, pic_src.Width, pic_src.Height, vbSrcCopy
  150.         Call pic_dst.Refresh
  151.         DoEvents
  152.     Next i
  153.  
  154.     tick = GetTickCount - tick - tick_d
  155.     Print , "&#194;&#240;&#229;&#236;&#255; &#226;&#251;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#255;:", tick
  156.     testDraw = tick
  157. Exit Function
  158. 1: MsgBox "error in testRdWr() function"
  159. End Function
  160.  

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 18.02.09 02:02
А че собственно тестим? :) Скорость работы интерпретатора VB6? :)

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 18.02.09 02:26
Steel Brand,
не не, мы создаем как бы.. эмулятор бенчмарка)) то есть он может безбожно врать, главное чтобы на разных системах относительно друг друга были вменяемые различия и, чтобы значения не менялись резко при повторном запуске
Вот.

Ответить

Номер ответа: 8
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #8
Добавлено: 18.02.09 08:51
А чем такой тест не показатель - все относительно. Врал бы он если б он видя параметры вашего компа говорил что он самый крутой и выполнил весь тест за 174 мс;-)

Ответить

Номер ответа: 9
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 19.02.09 08:29
Есть у меня один странный алгоритм, рисует пламя на пикчербоксе.
Странность в том, что на радеон НD4800 он подтормаживает, на агэпэшной энвидия FХ5500 терпимо, на радеон Х1600 бегает нормально, а на каком-то встроеном Intel 965 Ехtrеме Grарhiсs просто летает.
Использует гет/сэт пиксель.

Ответить

Номер ответа: 10
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #10 Добавлено: 19.02.09 11:04
Это не странность, а особенность гет/сет пиксель :rolleyes:

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам