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

Оптимизация алгоритма Хаффмана - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему valgrind показывает утечку? http://www.cyberforum.ru/cpp/thread1419412.html
Добрый вечер, Вот кусочек шаблона и чуть-чуть функции main template < size_t precision_T, size_t base_T > class BigFloat { public: BigFloat(const char *source); ~BigFloat(); private: int *buf_;
C++ Компиляция проекта в gcc Здравствуйте, форумчане! Прошу помочь разобраться! Есть программа, представленная в 3х файлах. В первом содержится описание класса (lin.h). Второй содержит описание функций этого класса (lin.cc) А третий саму программу (main.cc) Никак не получается собрать эти при файла в gcc, выдает ошибки как только не пробовал. Подскажите какая правильная последовательность компиляции, пожалуйста! http://www.cyberforum.ru/cpp/thread1417206.html
C++ Разработка ПО для блока управления сканером
Дали задание для курсовой работы, но не могу понять как это сделать. Разработать ПО на С++ для блока управления сканером. Дали шаговый двигатель. Как я понял одна программа работает на компьютере, ловит нажатия клавиш и отправляет специальные команды в com-порт. Надо чтоб две кнопки вращали двигатель в разные стороны, плюс копка запуска. Кто сможет хотя бы чем нибудь помочь, буду рад помощи....
Нужен скрипт, чтобы проверить email на схожесть C++
Доброе время суток. Создаю тему в данном разделе, поскольку мой вопрос можно отнести к разным языкам как думаю. Задача проста, но для несведущего в программировании сложна. Есть база данных email, база большая, несколько десятков тысяч. Так вот попадаются порой схожие email, например: c.h.e.a.po.akl.e.y.s.ou.t.l.et.au@gmail.com c.hea.poa.kleysu.nglass.esa.us.ale@gmail.com...
C++ Изменение прав доступа к сервису http://www.cyberforum.ru/cpp/thread1416413.html
char c = "/K sc sdset \"My Sample Service\" D:(A;;RPWPDT;;; AU)(A;;CCLCSWRPWPDTLOCRRC;;; SY)(A;; CCDCLCSWRPWPDTLOCRSDRCWDWO;;; BA)(A;; CCRC;;; IU)(A;; CCLCSWLOCRRC;;; SU)S:(AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO;;; WD)"; ShellExecute(NULL, "open", "cmd.exe",c, NULL, SW_SHOW); через командную строку все работает, но вот программу не могу написать "...
C++ Как подключится к Active Directory при помощи LDAP подключения? Нужна помощь!!! Не мог разобраться как с помощью C++ подключится к Active Directory по средствам LDAP подключения, и осуществить вывод св-в пользователя!!! подробнее

Показать сообщение отдельно
rostman_rk
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 7
13.04.2015, 14:46  [ТС]     Оптимизация алгоритма Хаффмана
А что за дивный компилятор у вас?
Поясните пожалуйста как у вас члены структурки инициализируются при объявлении?
VS2013 проглатывает и более того работает + я их создаю динамически.

rostman_rk, воспользуйтесь профайлером
Я думаю он тут не понабиться так как вся обработка тут (где обработка каждого байта/бита):
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (input->peek() != EOF){
            input->get(c);
            progress--;
            v = table[c];
            for (int i = 0; i < v.size(); i++){
                buf = (buf | v[i]);
                count++;
                if (count == 8){
                    count = 0;
                    output->write((char*)& buf, sizeof(char));
                    buf = 0;
                }
                buf <<= 1;
            }
        }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while (progress != 0){
            input->get(buf);        
            for (int i = 0; i < 8 && progress; i++){
                foo = buf & 128;
                foo ? v.push_back(1) : v.push_back(0);
                buf <<= 1;
                if (table.find(v) != table.end()){
                    output->put(table[v]);
                    progress--;
                    v.clear();
                }
            }
        }

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
 while (!input->eof()){
        progress--;
        input->read((char*)&buf, 1);
        node *in = getChangedItem(buf); 
        rebuildTree(in);
    }
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
while (progress){
        input->read((char*)&buf, 1);
        for (int i = 0; i < 8 && progress; i++){
            if (tmp->left == NULL && tmp->right == NULL){
                //if symbol is new
                if (tmp->is_esc){
                    writeBuf = 0;
                    //read first part of new symbol from this byte
                    fillWriteBuf(8 - i, buf);
                    //read last part of new symbol from next byte
                    input->read((char*)&buf, 1);
                    fillWriteBuf(i, buf);
                    //add symbol to list and write in file
                    add(writeBuf);
                    output->put(writeBuf);
                    //rebuild tree
                    rebuildTree(listOfItems[listOfItems.size() - 2]);
                }
                //symbol is in list
                else{
                    output->put(tmp->symbol);
                    rebuildTree(tmp);
                }
                //pointer to root and dec lenght
                tmp = treeRoot;
                progress--;
            }
            //move to next bit of input char
            bool foo = buf & 128;
            tmp = foo ? tmp->right : tmp->left;
            buf <<= 1;
        }
    }


Добавлено через 2 часа 30 минут
Цитата Сообщение от NEbO Посмотреть сообщение
rostman_rk, воспользуйтесь профайлером
а ну и да, я ж профилировал, только вот не знаю что можно оптимизировать. Вот коротко самые ресурсоемкие:
при разкодировании:

а)статическим
C++
1
2
Function Name   Total CPU (%)   Self CPU (%)    Total CPU (ms)  Self CPU (ms)   Module
 + <Module>::std.vector<bool,std::allocator<bool> >.push_back   32.77 % 0.05 %  28090   45  Coursework.exe
б) динамическим
C++
1
2
Function Name   Total CPU (%)   Self CPU (%)    Total CPU (ms)  Self CPU (ms)   Module
 + <Module>::DynamicHuffman.findIndexOfNode 14.50 % 4.98 %  12430   4271    Coursework.exe
при кодировании:
а) динимический:
C++
1
2
3
4
Function Name   Total CPU (%)   Self CPU (%)    Total CPU (ms)  Self CPU (ms)   Module
 + <Module>::DynamicHuffman.rebuildTree 14.62 % 0.10 %  12533   86  Coursework.exe
Function Name   Total CPU (%)   Self CPU (%)    Total CPU (ms)  Self CPU (ms)   Module
 + <Module>::DynamicHuffman.getChangedItem  14.27 % 0.03 %  12232   28  Coursework.exe
б)статическим
C++
1
2
Function Name   Total CPU (%)   Self CPU (%)    Total CPU (ms)  Self CPU (ms)   Module
 - <Module>::StaticHuffman.encode   3.63 %  0.08 %  3112    65  Coursework.exe
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru