Форум программистов, компьютерный форум CyberForum.ru

Дизасемблированный код в составе отладчика - C++

Восстановить пароль Регистрация
 
gorynech2
-4 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 32
19.01.2012, 21:57     Дизасемблированный код в составе отладчика #1
я взял код метод пузырька ,и перевел оптимизация по скорости и размеру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "iostream.h"
#include "stdio.h"
 
void bubbleSort(int array[], int col){                    
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
                for (int j=0;  j<col-i;  j++){     
                        if (array [j]>array [j+1]){     
                                temp=array[j];           
                                array [j]=array [j+1];    
                                array [j+1]=temp;
                        }
                }
        }
}
 
void main(){
        int i, size;
        int *array;
    cout << "Bubble Sort.\nEnter array dimension: ";
    cin >> size;
        array = new int[size];
    cout << "Enter " << size << " elements: ";
        for ( i = 0; i < size; i ++ ){
                cin >> array[i];
        }
 
        bubbleSort( array, size );
 
        cout << "Your array after sorting: ";
        for ( i = 0; i < size; i ++ ){
                cout << array[i] << " ";
        } 
    cout << "\nPress \"Enter\" to continue..." << endl; 
    getchar();
}
а как сделать вывод за счет его достигается уменьшение размера кода и увеличение скорости???????

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// оптимизация по скорости
__declspec(noinline)
void bubbleSort(int array[], int col){                    
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
00401000  cmp         eax,1  
00401003  jle         bubbleSort+34h (401034h)  
00401005  push        ebx  
00401006  push        esi  
00401007  push        edi  
00401008  lea         edi,[eax-1]  
0040100B  lea         ebx,[eax-1]  
0040100E  mov         edi,edi  
                for (int j=0;  j<col-i;  j++){     
00401010  xor         eax,eax  
00401012  test        edi,edi  
00401014  jle         bubbleSort+2Dh (40102Dh)  
                        if (array [j]>array [j+1]){     
00401016  mov         edx,dword ptr [ecx+eax*4+4]  
0040101A  mov         esi,dword ptr [ecx+eax*4]  
0040101D  cmp         esi,edx  
0040101F  jle         bubbleSort+28h (401028h)  
                                temp=array[j];           
                                array [j]=array [j+1];    
00401021  mov         dword ptr [ecx+eax*4],edx  
                                array [j+1]=temp;
00401024  mov         dword ptr [ecx+eax*4+4],esi  
                for (int j=0;  j<col-i;  j++){     
00401028  inc         eax  
00401029  cmp         eax,edi  
0040102B  jl          bubbleSort+16h (401016h)  
// voit 3-5.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
__declspec(noinline)
void bubbleSort(int array[], int col){                    
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
0040102D  dec         edi  
0040102E  dec         ebx  
0040102F  jne         bubbleSort+10h (401010h)  
00401031  pop         edi  
00401032  pop         esi  
00401033  pop         ebx  
                        }
                }
        }
}
00401034  ret
Оптимизация по размеру ->
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
__declspec(noinline)
void bubbleSort(int array[], int col){                    
00401000  push        ebp  
00401001  mov         ebp,esp  
00401003  push        ecx  
00401004  push        ecx  
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
00401005  cmp         eax,1  
00401008  jle         bubbleSort+40h (401040h)  
0040100A  lea         ecx,[eax-1]  
0040100D  dec         eax  
0040100E  push        ebx  
0040100F  mov         dword ptr [ebp-4],ecx  
00401012  mov         dword ptr [ebp-8],eax  
00401015  push        esi  
                for (int j=0;  j<col-i;  j++){     
00401016  xor         ebx,ebx  
00401018  cmp         dword ptr [ebp-4],ebx  
0040101B  jle         bubbleSort+36h (401036h)  
0040101D  lea         eax,[edi+ebx*4]  
                        if (array [j]>array [j+1]){     
00401020  mov         edx,dword ptr [eax]  
00401022  lea         ecx,[edi+ebx*4+4]  
00401026  mov         esi,dword ptr [ecx]  
00401028  cmp         edx,esi  
0040102A  jle         bubbleSort+30h (401030h)  
                                temp=array[j];           
                                array [j]=array [j+1];    
0040102C  mov         dword ptr [eax],esi  
                                array [j+1]=temp;
0040102E  mov         dword ptr [ecx],edx  
                for (int j=0;  j<col-i;  j++){     
00401030  inc         ebx  
00401031  cmp         ebx,dword ptr [ebp-4]  
00401034  jl          bubbleSort+1Dh (40101Dh)  
        int temp=0;                              
        for (int i=1;  i<col  ;  i++){            
00401036  dec         dword ptr [ebp-4]  
00401039  dec         dword ptr [ebp-8]  
0040103C  jne         bubbleSort+16h (401016h)  
0040103E  pop         esi  
0040103F  pop         ebx  
                        }
                }
        }
}
00401040  leave  
00401041  ret
 Комментарий модератора 
Используйте теги форматирования кода!


Добавлено через 3 часа 50 минут
что ни кто не знает??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 21:57     Дизасемблированный код в составе отладчика
Посмотрите здесь:

Написать программу, имеющую в своем составе функцию C++
В составе программы описать функцию C++
Ввести строку. На печать выдать слова, имеющие в своём составе сочетание букв «но» C++
C++ Ввести строку. На печать выдать слова, имеющие в своём составе сочетание букв «но»
Выдать слова, имеющие в своём составе сочетание букв «но» C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2012, 22:02     Дизасемблированный код в составе отладчика #2
размер - посмотреть на сгенеренный бинарь.
скорость:
запоминаете время перед началом цикла вызовов.
запускаете цикл с большим количеством итераций, который выполняет один и тот же код
после выхода из цикла снова запоминаете время.
разница перед началом и концом - время работы цикла.
сравниваете времена работы цикла при разных режимах оптимизации.

либо скорость профайлером можно померить.
gorynech2
-4 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 32
19.01.2012, 22:22  [ТС]     Дизасемблированный код в составе отладчика #3
да не так,
"за счет чего Скорость быстрее чем размер

"за счет чего Размер меньше чем Скорость
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.01.2012, 03:50     Дизасемблированный код в составе отладчика #4
Должно понимать такие простые вещи, что скорость и размер нельзя сравнивать...
Yandex
Объявления
20.01.2012, 03:50     Дизасемблированный код в составе отладчика
Ответ Создать тему
Опции темы

Текущее время: 16:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru