Помощь - Поиск - Пользователи - Календарь
Полная версия: хочу оценить скорость работы сорт массива как??
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Shadow
:D как оценить скорость работы массива?? програмы??
---
сточность до мл секунд
---
на ASM
--
т.к. уменя две программы написаные на ASM
GLuk
Юзай мем по адресу 40h:6Ch... (счетчик тиков)
Shadow
:D попробую
------
пробовал да чего-то  не выходит
---
т.к. как нет уменя инфы по портам как им воспользоваься???
Shadow
: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
Цитата
имеешь ввиду ето???


Нафига 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
:D понятно
GLuk
Как скорость то... (пож-ста в МСек)
Кинь исходник, кстати  ;)
Shadow
---
сорт массива или скорости определ
сортир массива с сохранеием индекса смещение в массиве при
перезаписи значений
модерниз пузырьков метод
и какой теперь метод получился
---
кстати сначала считать из памяти показ времени
потом отсортир
и еще раз с читать показ памяти
---
и какие там данные в памяти только тики или еще что-то
===
их еще переуодировать нада
т.к. я в ASM работ целиком
===
Clane
Может сделаем конференцию по асму ??? :D
Shadow
:D УГУ я непротив
---
но ето эксклюзив
на любителя
---
Mixa
Всё намного проще!
Пусть в массиве N элементов, тогда для каждого типа сортировки есть свои показатели быстродействия(посчитанные умными людьми).
Например, для сортировки используется "пузырёк", тогда Сср=N*N/2 Mcp=0.75N*N, где С-колич-во ключей, а М-кол-во перестановок.Кстати, пузырёк - самый медленный тип сортировки.
GLuk
Цитата
Всё намного проще!
для каждого типа сортировки есть свои показатели быстродействия(посчитанные умными людьми).


Жалко, что мы не такие умные, а как это применимо к конкретному конфигу, расскажи пожалуйста?
AlaRic
Цитата
Кстати, пузырёк - самый медленный тип сортировки.

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

З.Ы. Про конкретный конфиг: может я невнимательно читал топик, но я не понял как именно сортируется массив.Определите - я напишу соответств. параметры (если смогу)
Shadow
:D он целиком на ASM
---
рубишь в унем
Shadow
:D
я посмотрел
6-5 сот сек на 840 элементов масс типа byte
-----
ето быстро??
Mixa
Всё относительно...
Shadow
ню у меня 1700 ГЦ Celeron
GLuk
Цитата
З.Ы. Про конкретный конфиг: может я невнимательно читал топик, но я не понял как именно сортируется массив.Определите - я напишу соответств. параметры (если смогу)


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

To Shadow: Выложил бы код я бы на еще на паре конфигов тестил...
Mixa
2Gluk:
Отвечая, я ориентировался на сабж.
Shadow
: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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.