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

RDTSC или как замерять количество тактов CPU на некоторые вычисления? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Инкремент в рекурсии http://www.cyberforum.ru/cpp-beginners/thread636286.html
Ребят, что-то не могу врубиться. Задача: используя рекурсию выводить введенный ранее текст в обратном порядке. Вот рабочая версия: #include <iostream> using namespace std; void reverse(char *);
C++ Статические библиотеки и Visual studio 1) Создала новый проект как статическая библиотека без предкомпилированных заголовков. 2) Написала некоторые функции. 3) Выставила релиз версию. 4) Собрала проект. На выходе получила lib файл. Вынесла отдельно в файл .h все описания структур и прототипы функций. Решила испытать ее, создала новый проект подключила этот lib файл и также заголовочный файл, вызвала функцию из этой... http://www.cyberforum.ru/cpp-beginners/thread636283.html
C++ "Порядковый номер" для каждого экземпляра класса?
Добрый вечер! Кто знает C++. Подскажите пожалуйста, сейчас застрял на задаче, где нужно создать "порядковый номер" для каждого создаваемого экземпляра класса. В коде который ниже на экран действительно выведется информация, что число объектов: 1, 2, 3, но в следующей задаче где нужно будет сначала ввести информацию о трех кораблях, а затем вывести все это на экран - три объекта...
C++ Найти номера наиболее и наименее удаленных друг от друга точек
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Найти номера наиболее и наименее удаленных друг от друга точек. Вот мой код: #include <iostream> #include <iomanip> #include <vector> #include <cmath> using namespace std; int main()
C++ Дефрагментация и FSCTL_MOVE_FILE http://www.cyberforum.ru/cpp-beginners/thread636252.html
Делал так как пишет мсдн http://msdn.microsoft.com/en-us/library/windows/desktop/aa363911(v=vs.85).aspx откуда брать параметры для FSCTL_MOVE_FILE int GetClusters(const char* name,bool d) { MOVE_FILE_DATA MoveParams;
C++ Алгоритм быстрой сортировки против пузырька Решил проверить утверждение, что быстрая сортировка намного эффективнее пузырьковой. Результат пузырька увидел почти сразу, а быстрой сортировки ждал пару минут и выключил. В чём дело? Ошибка в коде? Или пузырькём лучше быстрой сортировки? Вот код: //Sort.cpp void BubbleSort(int num, int size_num){ подробнее

Показать сообщение отдельно
returnless
25 / 25 / 3
Регистрация: 05.08.2012
Сообщений: 83
12.08.2012, 14:54  [ТС]     RDTSC или как замерять количество тактов CPU на некоторые вычисления?
выключил оптимизацию теперь порядок нормальный.
Assembler
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
; 30   : 
; 31   :    for (int i = 0; i<10; i++) 
 
    mov DWORD PTR _i$1647[ebp], 0
    jmp SHORT $L1648
$L1649:
    mov edx, DWORD PTR _i$1647[ebp]
    add edx, 1
    mov DWORD PTR _i$1647[ebp], edx
$L1648:
    cmp DWORD PTR _i$1647[ebp], 10      ; 0000000aH
    jge SHORT $L1650
 
; 32   :    {
; 33   :    //length = x + y + z;
; 34   :    __asm rdtsc;
 
    rdtsc
 
; 35   :    __asm mov [clock], eax;
 
    mov DWORD PTR _clock$[ebp], eax
 
; 36   : 
; 37   :    // вычисляем длину вектора
; 38   :    length = sqrtf (x*x + y*y + z*z);
 
    fld DWORD PTR _x$[ebp]
    fmul    DWORD PTR _x$[ebp]
    fld DWORD PTR _y$[ebp]
    fmul    DWORD PTR _y$[ebp]
    faddp   ST(1), ST(0)
    fld DWORD PTR _z$[ebp]
    fmul    DWORD PTR _z$[ebp]
    faddp   ST(1), ST(0)
    push    ecx
    fstp    DWORD PTR [esp]
    call    _sqrtf
    add esp, 4
    fstp    DWORD PTR _length$[ebp]
 
; 39   : 
; 40   : 
; 41   :    __asm rdtsc;
 
    rdtsc
 
; 42   :    __asm sub eax,[clock];
 
    sub eax, DWORD PTR _clock$[ebp]
 
; 43   :    __asm mov [clock], eax;
 
    mov DWORD PTR _clock$[ebp], eax
 
; 44   : 
; 45   :    // количество тактов процессора на вычисления
; 46   :    printf("pass %u clock %u result %f\n", i, clock, length);
 
    fld DWORD PTR _length$[ebp]
    sub esp, 8
    fstp    QWORD PTR [esp]
    mov eax, DWORD PTR _clock$[ebp]
    push    eax
    mov ecx, DWORD PTR _i$1647[ebp]
    push    ecx
    push    OFFSET FLAT:$SG1651
    call    _printf
    add esp, 20                 ; 00000014H
 
; 47   : 
; 48   :    average += clock;
 
    mov edx, DWORD PTR _average$[ebp]
    add edx, DWORD PTR _clock$[ebp]
    mov DWORD PTR _average$[ebp], edx
 
; 49   :    };
 
    jmp SHORT $L1649
$L1650:
 
; 50   :    printf("average clock %u\n", (int)(average / i));
170-190 тактов. плин.
 
Текущее время: 14:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru