Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ хочу оценить скорость работы сорт массива как??

Автор: Shadow 21.04.2003 14:43

:D как оценить скорость работы массива?? програмы??
---
сточность до мл секунд
---
на ASM
--
т.к. уменя две программы написаные на ASM

Автор: GLuk 21.04.2003 19:51

Юзай мем по адресу 40h:6Ch... (счетчик тиков)

Автор: Shadow 21.04.2003 23:38

:D попробую
------
пробовал да чего-то  не выходит
---
т.к. как нет уменя инфы по портам как им воспользоваься???

Автор: Shadow 22.04.2003 5:36

:D

Код
.MODEL SMALL
.STACK 100H
.DATA

mem      db ?

.CODE
START:
     mov ax,40h
     mov ds,ax
     
     mov si,6ch
     xor ax,ax
     mov ax,ds:[si]
     
     
     
           
     mov ah,4ch     ;|
     mov al,0     ;| -EXIT to DOS;
     int 21h           ;|/

END START


имеешь ввиду ето???

Автор: GLuk 22.04.2003 19:53

Цитата
имеешь ввиду ето???


Нафига AX то обнулять... :o

Я ж писал адрес (типа сегмент и смещение)

Код
asm
mov si,6Ch
mov ax,40h
mov ds,ax
{таперича DS:SI = 40h:6Ch}
И сохр. 4 байта по этому адресу.
lodsw
push ax
lodsw
push ax
end;

типа того

Автор: Shadow 23.04.2003 0:34

:D понятно

Автор: GLuk 23.04.2003 19:53

Как скорость то... (пож-ста в МСек)
Кинь исходник, кстати  ;)

Автор: Shadow 24.04.2003 0:32

---
сорт массива или скорости определ
сортир массива с сохранеием индекса смещение в массиве при
перезаписи значений
модерниз пузырьков метод
и какой теперь метод получился
---
кстати сначала считать из памяти показ времени
потом отсортир
и еще раз с читать показ памяти
---
и какие там данные в памяти только тики или еще что-то
===
их еще переуодировать нада
т.к. я в ASM работ целиком
===

Автор: Clane 24.04.2003 1:36

Может сделаем конференцию по асму ??? :D

Автор: Shadow 24.04.2003 2:22

:D УГУ я непротив
---
но ето эксклюзив
на любителя
---

Автор: Mixa 24.04.2003 17:50

Всё намного проще!
Пусть в массиве N элементов, тогда для каждого типа сортировки есть свои показатели быстродействия(посчитанные умными людьми).
Например, для сортировки используется "пузырёк", тогда Сср=N*N/2 Mcp=0.75N*N, где С-колич-во ключей, а М-кол-во перестановок.Кстати, пузырёк - самый медленный тип сортировки.

Автор: GLuk 24.04.2003 20:43

Цитата
Всё намного проще!
для каждого типа сортировки есть свои показатели быстродействия(посчитанные умными людьми).


Жалко, что мы не такие умные, а как это применимо к конкретному конфигу, расскажи пожалуйста?

Автор: AlaRic 24.04.2003 23:33

Цитата
Кстати, пузырёк - самый медленный тип сортировки.

А также самый легкий и понятный! В программировании это важнее эффективности!

Автор: Shadow 24.04.2003 23:55

:D кстати если сохранять смещение при перезаписи и востанавливать когда презаписи нет то ето ускоряет процесс сортировки
но какой метод получится???
----

Автор: Mixa 24.04.2003 23:58

Я никого не хотел обидеть, я просто хотел сказать, что для каждого типа сортировки уже посчитаны вот такие вот параметры (не мной ессно).
А теперь по существу.Вы спрашиваете как быть в данном случае? Для начала, определить какой именно тип сортировки используется, их всего-ничего: простое включение, бинарное включение, простой выбор, простой обмен(пузырёк), сортировка Шелла, сортировка Хоара (кажется всё).А потом посмотреть на соответствующии параметры (не охота выписывать для каждого) и собственно всё!

З.Ы. Про конкретный конфиг: может я невнимательно читал топик, но я не понял как именно сортируется массив.Определите - я напишу соответств. параметры (если смогу)

Автор: Shadow 25.04.2003 0:14

:D он целиком на ASM
---
рубишь в унем

Автор: Shadow 25.04.2003 4:40

:D
я посмотрел
6-5 сот сек на 840 элементов масс типа byte
-----
ето быстро??

Автор: Mixa 25.04.2003 17:57

Всё относительно...

Автор: Shadow 26.04.2003 0:08

ню у меня 1700 ГЦ Celeron

Автор: GLuk 26.04.2003 7:53

Цитата
З.Ы. Про конкретный конфиг: может я невнимательно читал топик, но я не понял как именно сортируется массив.Определите - я напишу соответств. параметры (если смогу)


Нужно было всего лишь определить время выполнения куска программы, что мы и сделали ч/з счетчик тиков...

To Shadow: Выложил бы код я бы на еще на паре конфигов тестил...

Автор: Mixa 26.04.2003 16:53

2Gluk:
Отвечая, я ориентировался на сабж.

Автор: Shadow 27.04.2003 0:15

:D
ню ладно
---
я вывод цифрь тиков не прекодировал
---
------

;sorting matrix the save addres index
;
;
.MODEL SMALL
.STACK 100H
.DATA
; 1 2 3 4 5 6 7
mas db 01,56,01,25,01,02,45 ;1
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
Db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;12
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;24
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;48
db 04,15,56,41,14,15,03 ;1
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;60
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;1
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;72
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;84
db 04,15,56,41,14,15,03 ;1
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;96
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 04,15,56,41,14,15,03 ;1
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;108
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;6
db 56,02,59,02,95,03,89 ;2
db 12,01,08,12,17,89,89 ;3
db 05,50,15,47,34,54,45 ;4
db 01,99,99,99,99,34,03 ;5
db 04,15,56,41,14,15,03 ;120*7=840

db 'яя'
db 10,13
db '$'

fl_wr db ?,'$'

time_h dw ?,10,13,'$'
time_s dw ?,10,13,'$'

time_h1 dw ?,10,13,'$'

time_s1 dw ?,10,13,'$'

.CODE
START:
mov ax,@data ;init data DS segment
mov ds,ax ;/
xor ax,ax ;ax in zero
mov al,0
mov ah,2ch
mov al,0
int 21h
; mov time_h,cx
mov time_s,dx
xor dx,dx
xor cx,cx

mov ax,03
int 10h
mov dx,offset mas
call _out_text
; call _wait_key

xor ax,ax
xor dx,dx

mov bp,offset mas
rep:
mov ax,ds:[bp] ;in ax number ds:[bp] addres

cmp ax,'яя' ;if ax='255255' then exit this sign end mas
je exit ;goto exit
cmp al,ah ;if al>ah then
ja over_write ;goto over write

cmp fl_wr,1 ;
je d_ad_m ;

inc bp ;
jmp rep ;

over_write:
xchg al,ah ;overal
mov ds:[bp],ax ;
; push bp ;saver addres

cmp bp,0 ;if bp=0 then
je d_ad_m ;go to d_ad_m
push bp
mov fl_wr,1 ;init flag
dec bp ;else decrement bp
jmp rep
d_ad_m:
pop bp ;
inc bp ;
mov fl_wr,0 ;
jmp rep ;

exit:
mov ah,2ch
int 21h
mov time_h1,cx;
mov time_s1,dx
xor cx,cx
xor dx,dx


mov dx,offset time_s
call _out_text

mov dx,offset time_s1
call _out_text

call _wait_key
mov dx,offset mas
call _out_text

call _wait_key
call _exit
;
;
;
_out_text proc near
mov al,0
mov ah,9
int 21h
ret
_out_text endp

_wait_key proc near
mov ah,0
int 16h
ret
_wait_key endp

_exit proc near
mov ah,4ch ;|
mov al,0 ;| -EXIT to DOS;
int 21h ;|/
_exit endp

END START