русский
Germany.ruForen → Архив Досок→ Programmierung

как правильно программировать?

785  1 2 3 4 5 alle
Murr коренной житель20.09.09 20:29
Murr
NEW 20.09.09 20:29 
in Antwort AlexOtt 20.09.09 19:51
чтобы он выжимал все возможное из железок...
------
Ну это кому как...
Кто-то выжимает что может из железок, кто-то заменяет 1000 Писюков Майнфреймом...
Об том, что объем требуемых вычислений растет быстрее производительности
систем Я помню...
#61 
AlexOtt знакомое лицо20.09.09 20:35
AlexOtt
20.09.09 20:35 
in Antwort Murr 20.09.09 20:29
 ну вот мы продаем продукт. мейнфрейм клиенту для него не нужен, но вот в потолки существующих железок мы вполне упираемся...
#62 
AlexOtt знакомое лицо20.09.09 20:36
AlexOtt
NEW 20.09.09 20:36 
in Antwort pkrasnop 20.09.09 20:28
большая часть возможностей метапрограммирования в С++ используется для эмуляции функциональных вещей :-)
#63 
Murr коренной житель20.09.09 20:48
Murr
NEW 20.09.09 20:48 
in Antwort anly 20.09.09 19:53
Да она и не нужна если программа написана понятно.
-----
Она нужна всегда. Даже когда имеется идеально написанный код, то в этом коде
не описаны условия его корректной работы. Например, написан анализатор для
грамматики типа LL(1)... по коду требования к грамматике не определишь...
Теперь я больше поддерживаю другие программы фирмы.
-----
Тут два пути.
Путь первый. Первое - оцениваешь каждую новую задачу. Второе - говоришь шефу
- это займет столько времени. Несогласный шеф получает задачу обратно и ищет
другого исполнителя.
Второй, путь. Ищешь новую работу.
#64 
Murr коренной житель20.09.09 20:57
Murr
NEW 20.09.09 20:57 
in Antwort pkrasnop 20.09.09 20:19
если нужна скорость, то иногда приходится немного жертвовать дизайном.
-----
Когда-то Я думал так же. Как показала практика - Я был не прав.
качественный по скорости
-----
Сначала профайлер, а там - видно будет. Возможно, что решение не в оптимизации
кода, а в новом железе...
#65 
Murr коренной житель20.09.09 21:06
Murr
NEW 20.09.09 21:06 
in Antwort AlexOtt 20.09.09 20:35
в потолки существующих железок мы вполне упираемся...
------
В потолки существующих железок упираюсь даже Я на своем домашнем
компостере... притом, что у меня ДЕЛЛ 1420 - пара ксеонов...
#66 
AlexOtt знакомое лицо20.09.09 21:10
AlexOtt
NEW 20.09.09 21:10 
in Antwort Murr 20.09.09 21:06
у нас сейчас стандартные модели - 4xQuadCore + куча памяти. Но потоки передаваемых данных растут быстрее чем мощность железа...
#67 
pkrasnop знакомое лицо20.09.09 21:20
pkrasnop
NEW 20.09.09 21:20 
in Antwort Murr 20.09.09 20:57
В ответ на:
если нужна скорость, то иногда приходится немного жертвовать дизайном.
-----
Когда-то Я думал так же. Как показала практика - Я был не прав.

Вы не подумайте, я за дизайн :-). И рефакторинг у меня занимает достаточно много времени. Но всё таки, в частности, виртуальные функции работают медленнее обычных, и иногда приходится это как-то обходить, особенно если функция вызывается очень часто.
#68 
Murr коренной житель20.09.09 21:23
Murr
NEW 20.09.09 21:23 
in Antwort AlexOtt 20.09.09 21:10
Но потоки передаваемых данных растут быстрее чем мощность железа...
------
Повторюсь:
Об том, что объем требуемых вычислений растет быстрее производительности
систем Я помню...
#69 
Murr коренной житель20.09.09 21:30
Murr
NEW 20.09.09 21:30 
in Antwort pkrasnop 20.09.09 21:20
виртуальные функции работают медленнее обычных
-----
Если это становится фактором, то есть смысл подумать об другой архитектуре
для решения задачи...
...или об другом железе...
#70 
pkrasnop знакомое лицо20.09.09 21:32
pkrasnop
NEW 20.09.09 21:32 
in Antwort Murr 20.09.09 21:30
не ООП? :-)
#71 
  Chipolino старожил20.09.09 21:35
NEW 20.09.09 21:35 
in Antwort pkrasnop 20.09.09 21:32
ООП не панацея ;-)
Виртуальным фунциям есть альтернативы.
#72 
Murr коренной житель20.09.09 21:36
Murr
NEW 20.09.09 21:36 
in Antwort pkrasnop 20.09.09 21:32
Разумеется ООП, но с пересмотром архитектуры задачи.
#73 
pkrasnop знакомое лицо20.09.09 21:44
pkrasnop
NEW 20.09.09 21:44 
in Antwort Murr 20.09.09 21:36
не могли бы на примере. Что такое архитектура задачи?
Вот простой пример:
У меня есть класс отвечающий за преобразование систем координат (читай трансформацию объектов). Я ему передаю точки, он мне их трансформирует.
template <typename Point>
class Transform
{
virtual void transform(Point& out, const Point& in) const = 0;
}
Т.к. объекты могут быть большими вызов функции будет частым, и если преобразование будет простым, то стоимость вызова функции будет сопоставима со стоимостью её вычисления.
Что делать? :-)
#74 
voxel3d коренной житель20.09.09 21:45
voxel3d
NEW 20.09.09 21:45 
in Antwort pkrasnop 20.09.09 21:20
В ответ на:
в частности, виртуальные функции работают медленнее обычных, и иногда приходится это как-то обходить, особенно если функция вызывается очень часто

А что пишете-то?
Dropbox - средство синхронизации и бэкапа файлов.
#75 
AlexOtt знакомое лицо20.09.09 21:51
AlexOtt
NEW 20.09.09 21:51 
in Antwort pkrasnop 20.09.09 21:44
можно не наследовать, а передавать функцию как параметер... я в одном из своих DSL строю дерево вычислений, где сразу подставляются нужные функции, а не используется наследование и вызов виртуальных функций - производительность выросла заметно...
#76 
pkrasnop знакомое лицо20.09.09 21:58
pkrasnop
NEW 20.09.09 21:58 
in Antwort AlexOtt 20.09.09 21:51
В ответ на:
можно не наследовать, а передавать функцию как параметер

1. Параметр чего?
2. То есть у преобразований нет общего класса?
#77 
AlexOtt знакомое лицо20.09.09 22:03
AlexOtt
NEW 20.09.09 22:03 
in Antwort pkrasnop 20.09.09 21:58
да - тут вообще не обязателен ООП. пример можно найти в разделе 2.2.4 в SICP, это реализуется и в C++ без особых проблем
#78 
Murr коренной житель20.09.09 22:07
Murr
NEW 20.09.09 22:07 
in Antwort pkrasnop 20.09.09 21:44
У меня есть класс отвечающий за преобразование систем координат
...
Что делать? :-)
------
Как меня учили в школе - т.е. на втором курсе физмата ЛУ - если в имеющейся системе считать сложно, например, в связи с нелинейностями, то надо перевести задачу в систему, где вычисления будут простыми. Всю задачу. Вопрос об том, какой должна быть система координат и есть один из вопросов архитектуры.
#79 
pkrasnop знакомое лицо20.09.09 22:09
pkrasnop
NEW 20.09.09 22:09 
in Antwort AlexOtt 20.09.09 22:03
В ответ на:
да - тут вообще не обязателен ООП. пример можно найти в разделе 2.2.4 в SICP, это реализуется и в C++ без особых проблем

Завтра посмотрю, но я пока склоняюсь применить статический полиморфизм
template <typename Derivate, typename Point>
class Transform
{
void transform(Point& out, const Point& in) const { return Derivate::transform(out, in); }
}
#80 
1 2 3 4 5 alle