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

Алгоритм шифрования DES (необходимо ускорить любым доступным способом) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с flash приложениями http://www.cyberforum.ru/cpp/thread733547.html
Есть некая flash игра, в ней есть цифры которые периодически меняются как можно получить их?
C++ Обработка изображения Здравствуйте. В С программировать начал недавно. Необходимо реализовать алгоритм обработки изображения на С++ с использованием только стандартных библиотек (курсовая). 1. С помощью каких функций инициализовать изображение, считать параметры пикселя-коды цветов, яркость, координаты? 2. Буду рад ссылкам на литературу на эту тематику (именно обработку изображений), примерам исходников, и вообще... http://www.cyberforum.ru/cpp/thread732855.html
init error file not found C++
Написал на Си программу, в ней используются двумерные массивы (скорей всего проблема в них). При запуске выдает mapping_data_source::init error: file not found Process returned -1073741571 (0xC00000FD) execution time : 1.234 s В чем беда?
Алгоритм построения полного потока C++
Как реализовать на c++ алгоритм построения полного потока Может есть у кого пример?
C++ стеганография в tcp/ip http://www.cyberforum.ru/cpp/thread729800.html
посоветуйте, что почитать. может кто-то занимался помогите пожалуйста
C++ Шеннон-Фано Помогите пожалуйста разобраться. Понимаю смысл алгоритма Шеннона-Фано. У меня есть код этого алгоритма и мне нужно разобрать как он работает void Schennon_Fano(int index1, int index2) { if(index1==index2) return; int i, C; double summ=0, p, summCopy=0; double vysche, nize; double ONO = SummVer(index1, index2);//суммируем все вер-ти от первого индекса до второго ONO =... подробнее

Показать сообщение отдельно
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,516
17.12.2012, 14:34  [ТС]     Алгоритм шифрования DES (необходимо ускорить любым доступным способом)
Развернул цикл средних перестановок (те что каждый цикл) до 32 написанных руками + там где блок добавил использование указателя (почему-то когда выделяешь руками через new память под блок и используешь потом указатели то быстрее работает где-то на 1/15), вроде теперь прохожу по лимиту времени, хотя и не факт. Я сейчас тестирую на процессоре амд, а сдавать на интел. Мне там говорили что интеловский компилятор творит якобы чудеса ... вопрос: можно ли собрать на АМД процессоре интеловским компилятором приложение оптимизированное под процессоры ИНТЕЛ ? Ну пускай оно у меня на амд хоть и в 5 раз медленее работает, важно чтобы при сдаче на интеловском процессоре оно работало быстро-быстро.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
ну и так далее
избавишься от этого сдвига
ок, в принципе дельный совет, это ещё поможет ускориться. Думаю тогда будет достаточно для сдачи, хотя разоваричавание цикла вот так уже дало в 3 раза прирост аж:
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
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
84
85
86
87
88
89
90
91
92
93
    //средняя перестановка (те что каждый цикл)
    uint32_t averagePermutation(uint32_t word) const
    {
        //средняя перестановка (mod - 32)
        static const size_t P[32]    = 
                {16,25,12,11,3,20,4,15,
                31,17,9,6,27,14,1,22,
                30,24,8,18,0,5,29,23,
                13,19,2,26,10,21,28,7};
 
        uint32_t result = 0;
        /*
        for (int i = 0; i < 32; ++i)
        {
            result <<= 1;
            result |= (word & (1ULL << (P[i]))) >> P[i];
        }
        */
        result <<= 1;
        result |= word & (1ULL << 16) >> 16;
 
        result <<= 1;
        result |= word & (1ULL << 25) >> 25;
        result <<= 1;
        result |= word & (1ULL << 12) >> 12;
        result <<= 1;
        result |= word & (1ULL << 11) >> 11;
        result <<= 1;
        result |= word & (1ULL << 3) >> 3;
        result <<= 1;
        result |= word & (1ULL << 20) >> 20;
        result <<= 1;
        result |= word & (1ULL << 4) >> 4;
        result <<= 1;
        result |= word & (1ULL << 15) >> 15;
        result <<= 1;
        result |= word & (1ULL << 31) >> 31;
        result <<= 1;
        result |= word & (1ULL << 17) >> 17;
        result <<= 1;
        result |= word & (1ULL << 9) >> 9;
        result <<= 1;
        result |= word & (1ULL << 6) >> 6;
        result <<= 1;
        result |= word & (1ULL << 27) >> 27;
        result <<= 1;
        result |= word & (1ULL << 14) >> 14;
        result <<= 1;
        result |= word & (1ULL << 1) >> 1;
        result <<= 1;
        result |= word & (1ULL << 22) >> 22;
        result <<= 1;
        result |= word & (1ULL << 30) >> 30;
        result <<= 1;
        result |= word & (1ULL << 24) >> 24;
        result <<= 1;
        result |= word & (1ULL << 8) >> 8;
        result <<= 1;
        result |= word & (1ULL << 18) >> 18;
        result <<= 1;
        result |= word & (1ULL << 0) >> 0;
        result <<= 1;
        result |= word & (1ULL << 5) >> 5;
        result <<= 1;
        result |= word & (1ULL << 29) >> 29;
        result <<= 1;
        result |= word & (1ULL << 23) >> 23;
        result <<= 1;
        result |= word & (1ULL << 24) >> 24;
 
        result <<= 1;
        result |= word & (1ULL << 13) >> 13;
        result <<= 1;
        result |= word & (1ULL << 19) >> 19;
        result <<= 1;
        result |= word & (1ULL << 2) >> 2;
        result <<= 1;
        result |= word & (1ULL << 26) >> 26;
        result <<= 1;
        result |= word & (1ULL << 10) >> 10;
        result <<= 1;
        result |= word & (1ULL << 21) >> 21;
        result <<= 1;
        result |= word & (1ULL << 28) >> 28;
        result <<= 1;
        result |= word & (1ULL << 7) >> 7;
 
 
 
 
        return result;
 
    }
Я, если честно, не ожидал такого прироста и думал что компилятор и так на макс. оптимизации хорошо угадывает ... хотя может это только у меня на процессоре амд с маленьким кешем так (у меня старый атлон двуядерный, они ещё не очень угадывали), а на новом i5где это будет сдаваться это прироста в 3 раза и не даст и хорошо если будет вообще прирост хоть в пол раза ...
 
Текущее время: 04:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru