Dim vs Type
Вот решил сравнить скорость массива и списка (это я так Type называть буду).
Вот рабочий код програмки-сравнялки, предупреждаю сразу:
1) Отключить debug mode. Ибо в противном случае процесс может и затянуться.
2) Проверить размер свободной оперативы (140 метров надо). Ибо в противном случае пример будет тестить лишь винт (pagefile), что не является тем ради чего он писался.
; dim vs type
Graphics 640,480,16,2
font=LoadFont("courier new cyr",16,1)
SetFont font
Print "================================================= ============================"
Print "убедитесь что у вас свободной оперативы более 140 МБ"
Print "иначе этот тест будет тестить ваш жесткий диск (pagefile)"
Print " да у меня более 40 своболных метров и я нажму 1:"
g=Input("1- продолжить; не 1 закончить; =>" )
If g<>1 Then End
SeedRnd MilliSecs()
Type typ
Field value
End Type
Print "================================================= ============================"
Print " Dim vs Type"
Print "================================================= ============================"
mem=AvailPhysicalRAM()
a=MilliSecs()
Dim test(5000000)
For i=1 To 5000000
test(i)=Rnd(5000)
Next
dim_create=MilliSecs()-a
dim_mem=mem-AvailPhysicalRAM()
Print "Заполнение массива:"+Str(dim_create)
mem=AvailPhysicalRAM()
a=MilliSecs()
For i=1 To 5000000
t.typ=New typ
t\value=Rnd(5000)
Next
type_create=MilliSecs()-a
type_mem=mem-AvailPhysicalRAM()
Print "Заполнение списка:"+Str(type_create)
Print "================================================= ============================"
Print "памяти под массивом :"+dim_mem Shr 20 +" MB"
Print "памяти под списком :"+type_mem Shr 20 + " MB"
Print "================================================= ============================"
el=Rnd(5000)
find_dim=0
find_type=0
Print " поиск элемента :"+Str(el)
a=MilliSecs()
For i=1 To 5000000
If el=test(i) Then find_dim=find_dim+1
Next
dim_create=MilliSecs()-a
Print "Поиск в массиве:"+Str(dim_create) +", найдено:"+Str(find_dim)
a=MilliSecs()
For t.typ=Each typ
If t\value=el Then find_type=find_type+1
Next
type_create=MilliSecs()-a
Print "Поиск в списке:"+Str(type_create)+ ", найдено:"+Str(find_type)
Print "================================================= ============================"
a=MilliSecs()
Dim test(0)
dim_destroy=MilliSecs()-a
Print "Уничтожение массива:"+Str(dim_destroy)
a=MilliSecs()
Delete Each typ
dim_destroy=MilliSecs()-a
Print "Уничтожение списка:"+Str(dim_destroy)
Print "================================================= ============================"
a=MilliSecs()
Dim test(5000000)
dim_destroy=MilliSecs()-a
Print "Обнуление массива:"+Str(dim_destroy)
For i=1 To 5000000
t.typ=New typ
t\value=Rnd(5000)
Next
a=MilliSecs()
For t.typ=Each typ
t\value=0
Next
dim_destroy=MilliSecs()-a
Print "Обнуление списка:"+Str(dim_destroy)
Print "================================================= ============================"
Print "Нажми любую клавишу для выхода. PS: Сначало запомни результат"
Print "================================================= ============================"
WaitKey()
|