Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
#1

Какой вариант более оптимальный? - C++

16.06.2012, 16:48. Просмотров 404. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Пишу лабу - распознаватель числовых констант. Возник вопрос, как оптимальнее, с точки зрения выполнения кода процессором, будет реализовать различные состояния автомата и переход между ними: с помощью перечисляемого типа и дальнейшей обработки с помощью switch/case
C++
1
2
3
4
5
6
7
8
typedef enum States {Normal, Slash, Constant, Backslash, Comment ...};
States State = Normal;
switch (State)
          {
                 case Normal:/*code*/
                 case Comment:/*code*/
                 ...
           }
Или же для каждого состояния разработать функцию, загнать их массив и переключать состояние автомата простым перемещением указателя на эти функции, например:
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
typedef void (*funPtr)(ifstream&, ofstream&); 
funPtr* t;
 
void Normal(ifstream& in, ofstream& out)
{
     //cout << "function Normal calling\n";
     char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t + 1;//тут
}
void Comment(ifstream& in, ofstream& out)
{
     cout << "function Comment calling\n";
     char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t + 1;
}
void SymbConst(ifstream& in, ofstream& out)
{
    char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t - 2;
}
...
int main()
{
    funPtr xt[] = {Normal, Comment, SymbConst, NumConst, Blocker};
    t = xt;
/*code*/
}
это пока только набороски.
Какая из реализаций в конечном итоге потребует меньше "тиков" процессора, и будет эффективнее?
А может, есть еще какие то более оптимальные способы реализации автомата?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какой вариант более оптимальный? (C++):

Найти более оптимальный способ решения задачи - C++
Вот задача: Имеется две таблицы: 1) Items (Id identity(1,1) int, Name varchar(50)) в которой хранятся составляющие продукты и...

Можно ли написать более оптимальный код, используя цикл while? - C++
собственно сабж. #include &lt;iostream&gt; using namespace std; int main() { int x, y, s, step = 1; cout &lt;&lt;...

Можно ли написать более оптимальный или простой код, используя цикл for? - C++
собственно сабж. #include &lt;iostream&gt; using namespace std; int main() { int sum, count, ost; for (count = 0;...

Какой вариант оформления функции лучше? - C++
Допустим, есть функция, которая что-то делает и, возвращает булево значение, в зависимости от того, получилось это сделать или нет. ...

Какой вариант конструктора использовать правильней? - C++
Два примера кода, какой из них использовать более корректно и профессионально? 1) card(){ } card (deck_1 value_1, deck_2...

Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный - C++
Прошу помогите, я плохо понимаю c++, да и простите если не в той теме, в общем, дали задание: Выбрать вариант не имеющий ошибки и к...

2
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2012, 17:02 #2
Цитата Сообщение от RUSya82 Посмотреть сообщение
Какая из реализаций в конечном итоге потребует меньше "тиков" процессора, и будет эффективнее?
требование к эффективности это условие ТЗ? я бы заботился об "удобности" расширения кода если потребуется, в этом 2-й вариант превосходит 1-й
1
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,444
16.06.2012, 17:07 #3
Какая потребует меньше тиков? Проверь сам! Есть API-шная функция getTickCount.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2012, 17:07
Привет! Вот еще темы с ответами:

Как бы вы написали кусок программы, Вариант 1 или Вариант 2? - C++
Как бы вы написали кусок программы Вариант 1 или Вариант 2 ? Вариант 1. double Value0 = value0 / 100; switch (i){ case 1: ...

Какой вклад более выгодный - C++
Помогите пожалуйста с программой Банк предлагает 3 вида срочных вкладов: на 3 месяца под p1%, на 6 месяцев под p2% и на год под p3%....

Какой язык более востребован C++ или C# - C++
какой язык более востребован ? если например изучить и потом устроится куда-либо или фриланс

Найти слова, которые состоят из 3х и более букв и имеют более 2х гласных - C++
Написать функцию, которая выводит слова, которые состоят из 3 х и более букв и имеющих более 2х гласных. Результат сохранить в файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru