|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.06.2012, 18:51 | #1 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Нуждаюсь в идее.
Добрый вечер.
Являясь неотесанным бруском, ищу хороший топор, который бы сделал из меня что-то хорошее ) Иными словами нуждаюсь в вашем опыте. У меня есть несколько функций. В программе они вызываются друг за другом и мне важно отследить в каком порядке они идут. Грубо говоря, мне нужно реализовать конвейерную обработку, поэтому и важен их порядок следования. Я остановился на идее сделать вектор функций и передавать его на обработку в другую функцию. Это выглядит так: Код:
Код:
Однако, аргументы у функций в перечислении не типа void*, но все одинаково типа. Хочется избавиться от приведения типов и, возможно, кто-то занимался подобным, как оптимизировать данный код, чтобы максимизировать быстродействие? Спасибо. |
20.06.2012, 19:01 | #2 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Glaciuse
Цитата:
Цитата:
непонятно, что ты хочешь, но вот пример вызова функций из вектора Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
20.06.2012, 19:19 | #3 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Прошу прощения за опечатку, но не вижу интерфейса для смены названия темы.
Вы все правильно поняли и пример ваш - как раз то, что я делаю. Является ли это оптимальным решением данной проблемы? Каждая моя функция состоит из 3х ступеней: a - операция с памятью. b - вычисление c - операция с памятью Если я буду вызывать их просто подряд получится такая схема: a1 b1 c1 a2 b2 c2 А у меня есть возможность (дабы аппаратура позволяет) распараллелить эти 3 ступени и получить следующую схему: a1 a2 b1 b2 c1 c2, что в моем случае поднимет быстродействие вдвое. Все сводится к тому, чтобы пользователь выбирал нужные ему функции, для запуска по подобной схеме конвейеризации, затем и нужно отслеживать порядок запуска функций. |
20.06.2012, 20:35 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Это - плохое решение. Как минимум - переусложнение понимания процесса.
Хорошее решение: то, что должно запускаться строго в определенной последовательности всегда должно запускаться в этой строгой последовательности: Инкапсулируй небезопасные функции в частной зоне какого нибудь механизма, у которого будет только один безопасный публичный интерфейс. Механизм сам позаботится об очередности вызовов небезопасных функций. |
20.06.2012, 20:47 | #5 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 44
|
Спасибо, я подумаю над этим.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
графы(нуждаюсь в идее или объясните готовый код) | shash | Помощь студентам | 2 | 14.05.2010 00:07 |
Обновить саму себя - Программа запускается, качает обновление и, по идее, переписывается поверх | cybviolence | Общие вопросы Delphi | 3 | 07.04.2010 13:37 |
Сортировки на идее выбора | andis | Помощь студентам | 4 | 06.03.2010 22:58 |
Cходящийся ряд (программа по идее должна работать но почему не работает понять не могу) в С++ | Vultar | Помощь студентам | 3 | 17.12.2009 13:04 |