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

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

Восстановить пароль Регистрация
 
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
16.06.2012, 16:48     Какой вариант более оптимальный? #1
Доброго времени суток. Пишу лабу - распознаватель числовых констант. Возник вопрос, как оптимальнее, с точки зрения выполнения кода процессором, будет реализовать различные состояния автомата и переход между ними: с помощью перечисляемого типа и дальнейшей обработки с помощью 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*/
}
это пока только набороски.
Какая из реализаций в конечном итоге потребует меньше "тиков" процессора, и будет эффективнее?
А может, есть еще какие то более оптимальные способы реализации автомата?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 16:48     Какой вариант более оптимальный?
Посмотрите здесь:

Как бы вы написали кусок программы Вариант 1 или Вариант 2 ? C++
как можно более просто написать эту программку(более понятным языком для начинающего) C++
C++ Какой вклад более выгодный
C++ прога которая содержащий не более 10 строк, в каждой строке не более 80 символов и эти символы вводятся с клавиатуры
Какой вариант оформления функции лучше? C++
C++ Найти слова, которые состоят из 3х и более букв и имеют более 2х гласных
Какой язык более востребован C++ или C# C++
Можно ли написать более оптимальный код, используя цикл while? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2012, 17:02     Какой вариант более оптимальный? #2
Цитата Сообщение от RUSya82 Посмотреть сообщение
Какая из реализаций в конечном итоге потребует меньше "тиков" процессора, и будет эффективнее?
требование к эффективности это условие ТЗ? я бы заботился об "удобности" расширения кода если потребуется, в этом 2-й вариант превосходит 1-й
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
16.06.2012, 17:07     Какой вариант более оптимальный? #3
Какая потребует меньше тиков? Проверь сам! Есть API-шная функция getTickCount.
Yandex
Объявления
16.06.2012, 17:07     Какой вариант более оптимальный?
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru