crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

7 страниц V  « < 3 4 5 6 7 >  
Ответить в данную темуНачать новую тему
> Реализация анализатора (парсера) формул времени выполнения
BRE
  опции профиля:
сообщение 9.3.2009, 13:50
Сообщение #41


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AntonTatu @ 9.3.2009, 13:35) *
    static MathStack m_stack;    // стек общий для всех операций

static нужен для того, чтобы стек был один для всех операций.
static раскомментируем. :)

В исходник за описанием класса Operation добавляем строку:
MathStack Operation::m_stack;


В таком виде у меня все копилируется без ошибок.
По функционированию посмотрю вечером, сейчас должен уехать по делам. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.3.2009, 14:03
Сообщение #42


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AntonTatu @ 9.3.2009, 16:35) *
выражение слева от ".pop" должно представлять класс, структуру или объединение
вот и убери лишнее слева, зачем тебе Operation::

Для всех:
Читайте тему Справка по кнопкам и тэгам форума
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 9.3.2009, 16:06
Сообщение #43


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 9.3.2009, 13:50) *
В исходник за описанием класса Operation добавляем строку:
MathStack Operation::m_stack;


В таком виде у меня все копилируется без ошибок.
По функционированию посмотрю вечером, сейчас должен уехать по делам. ;)


все заработало ! :) (фух...) спасибо !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.3.2009, 16:11
Сообщение #44


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Как по скорости?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 9.3.2009, 17:24
Сообщение #45


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Еще небольшое уточнение, насчет операций вычитания и деления:
void SubOp::run()
{
    double v1 = m_stack.pop();
    double v2 = m_stack.pop();
    m_stack.push( v2 - v1 );      // Вычитаем число с вершины стека
}

void DivOp::run()
{
    double v1 = m_stack.pop();
    double v2 = m_stack.pop();
    m_stack.push( v2 / v1 );      // Делим на число с вершины стека
}

Для сложения/умножения не принципиально. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 9.3.2009, 18:59
Сообщение #46


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(SABROG @ 9.3.2009, 16:11) *
Как по скорости?

на первый взгляд не плохо, наднях обязательно отпишусь... :rolleyes:

Цитата(BRE @ 9.3.2009, 17:24) *
Для сложения/умножения не принципиально. :)

:rolleyes: спасибо еще раз !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 9.3.2009, 20:32
Сообщение #47


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AntonTatu @ 9.3.2009, 18:59) *
Цитата(SABROG @ 9.3.2009, 16:11) *
Как по скорости?

на первый взгляд не плохо, наднях обязательно отпишусь... :rolleyes:

Погонял тесты, при замене QStack на std::stack, получил увеличение производительности больше чем в 12 раз.
Раскрывающийся текст

#include <stack>

class MathStack
{              
public:        
        void   push( double var);
        double pop ();          

private:
        std::stack<double> m_stack;
};                                

void MathStack::push( double var )
{                                
        m_stack.push( var );      
}                                

double MathStack::pop()
{                      
        double val = m_stack.top();
        m_stack.pop();            
        return val;                
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 9.3.2009, 20:36
Сообщение #48


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(BRE @ 9.3.2009, 20:32) *
Погонял тесты, при замене QStack на std::stack, получил увеличение производительности больше чем в 12 раз.

Кстати, а почему так? С чем это связано?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 9.3.2009, 20:46
Сообщение #49


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AD @ 9.3.2009, 20:36) *
Цитата(BRE @ 9.3.2009, 20:32) *
Погонял тесты, при замене QStack на std::stack, получил увеличение производительности больше чем в 12 раз.

Кстати, а почему так? С чем это связано?

Пока не разбирался, сам в недоумении. :blink:
Будем посмотреть... :)

Посмотрел.
QStack построен на базе QVector, и при добавлении/удалении элемента постоянно делает resize вектора.
std::stack построен на std::deque, соответственно скорость добавления/удаления на высоте.

Сообщение отредактировал BRE - 9.3.2009, 22:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.3.2009, 20:56
Сообщение #50


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Ребята подумайте как переименовать тему, я ее читаю вскользь. Вы лучше должны суть понимать, но название Как создать dll из собственной программы ? не отражает суть обсуждения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

7 страниц V  « < 3 4 5 6 7 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 9:07