|
|
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Требуется ваш совет по вопросу наследования классов. :) На примере... допустим есть пара классов, предназначенных для обработки данных с различными структурами таблиц в базе данных: линейная и иерархическая (в виде дерева) структуры. Необходимо, чтобы можно было добавлять, редактировать, удалять и выводить данные через один интерфейс для разных таблиц. Т.е. в зависимости от типа структуры таблицы запускать соответствующую обработину. Код: plaintext 1. 2. 3. "Прототипы" классов: Код: plaintext 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. Теперь суть вопроса: Когда я решил немного заняться "рефакторингом", то обнаружил, что часть методов (пара методов) класса DB_TreeTable совпадает с методами класса DB_StandartTable. Например - getDeleteSqlQuery(). Стоит ли из-за двух методов сделать класс DB_TreeTable потомком класса DB_StandartTable (типа class DB_TreeTable extends DB_StandartTable)? А остальные методы "переопределить"... По смыслу вроде бы вполне логично так реализовать (с точки зрения ОПП). :) Насколько "наследование" в PHP "увеличивает" нагрузку на сервер или "наследование классов" никак не влияет на производительность? Заранее благодарю! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 16:45 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
> Насколько "наследование" в PHP "увеличивает" нагрузку на сервер или > "наследование классов" никак не влияет на производительность? производительность снизится на 7.8 секунд/метр_кубический :-| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 16:55 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
>"наследование классов" никак не влияет на производительность? Влияет.. причем зависимость печально нелинейая. Есть шанс, что при наличии большого количества родителей при исполнении скрипта время затраченное на определение родителей больше, чем на исполнение скрипта. В цифрах ничего не могу сказать. Попробуй написать профайлер и оценить скорость исполнения. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 16:58 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
4m@t!c>"наследование классов" никак не влияет на производительность? Влияет.. причем зависимость печально нелинейая. Есть шанс, что при наличии большого количества родителей при исполнении скрипта время затраченное на определение родителей больше, чем на исполнение скрипта. В цифрах ничего не могу сказать. Попробуй написать профайлер и оценить скорость исполнения. откуда такие данные и как проводилось тестирование ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 16:59 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-> Насколько "наследование" в PHP "увеличивает" нагрузку на сервер или > "наследование классов" никак не влияет на производительность? производительность снизится на 7.8 секунд/метр_кубический :-| Можно конечно и поприкалываться... но опыта работы у меня пока не так и много. Иначе бы не спрашивал Вообще влияет ли на производительность разбор "какой класс что наследует и какие методы переопределяются"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:00 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
2 4m@t!c откуда такие данные и как проводилось тестированиеДа, мне тоже интересно узнать, где можно почитать про это. :) Конкретно в моем случае получается, что класс DB_TreeTable наследуется от двух классов. Причем в нем "переопределяются" порядка 10 методов и 2 "наследуются" от DB_StandartTable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:06 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Опыт не мой. Когда-то зашел разговор о ООП и наследовании и т.д. Действительно опытный человек упомянул, что если много наследовать и переопределять - это порочная практика, так как скорость исполнения заметно снижается. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:07 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
4m@t!cОпыт не мой. Когда-то зашел разговор о ООП и наследовании и т.д. Действительно опытный человек упомянул, что если много наследовать и переопределять - это порочная практика, так как скорость исполнения заметно снижается. ---------------------------------------- Артисты не приехали, приехали цыганеТ.о. образом не стОит заморачиваться на наследовании из-за двух методов? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:13 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Думаю, что не стОит. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:16 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Во-первых, большое дерево наследования выглядит очень подозрительно (под большим я имею ввиду более 3 уровней). Причем не в плане скорости а в плане проектирования. Здесь стоит обратить внимание на делегирование, но это именно концептуальное улучшение, а не оптимизация скорости. Во-вторых, почему эти 2 метода нельзя вынести в родительский метод ? (это вопрос лично автору топика). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:24 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:24 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-Во-вторых, почему эти 2 метода нельзя вынести в родительский метод ? в смысле, в родительский класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:25 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.- Во-вторых, почему эти 2 метода нельзя вынести в родительский класс? возник аналогичный вопрос - не успел запостить...;)))) ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:28 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Не там ищете. Наследование - это самое узкое место в вашем коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:31 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
> Во-первых, большое дерево наследования выглядит очень подозрительно (под большим я имею ввиду более 3 уровней) Если делать так как показано на прототипах классов, то получится как раз 3 уровня (2 родительских класса, 1 потомок). > Здесь стоит обратить внимание на делегирование А что значит "делегирование"? :) > Во-вторых, почему эти 2 метода нельзя вынести в родительский метод ? В конкретном случае (в проекте) это было бы не совсем логично (по смыслу класса). Хотя возможно вы и правы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:31 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
*Не там ищете.А где следует искать? *Наследование - это самое узкое место в вашем коде?В каком смысле "узкое"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 17:33 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
Berkut *Не там ищете.А где следует искать?Программы = алгоритмы + структуры данных. Вы уже искали в этих двух слагаемых? *Наследование - это самое узкое место в вашем коде?В каком смысле "узкое"?В буквальном. В плане затрат временнЫх ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 20:53 |
|
||
|
(PHP, ОПП) Влияет ли наследование классов на производительность?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-Во-вторых, почему эти 2 метода нельзя вынести в родительский метод ? (это вопрос лично автору топика).Хотя возможно вы и правы :) Решил так и сделать :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. *Программы = алгоритмы + структуры данных. Вы уже искали в этих двух слагаемых?Не совсем догоняю хода ваших мыслей... какое отношение "алгоритмы + структуры данных" имеют к "наследованию классов"? Полагаю, что вы клоните в неверному проектированию, так? :) *Наследование - это самое узкое место в вашем коде? Нет. Просто вчера решил "остановиться" и посмотреть/проверить что получается, и обнаружил, что некоторые однотипные операции (обработки) повторяются в разных классах. Собственно поэтому и возник такой вопрос "Как лучше и правильнее сделать?". Имхо, ничего плохого в такой практике не вижу, чтобы на определенном этапе "улучшить" код :) Что касается поиска "алгоритмов + структуры данных", то если честно, не искал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2005, 11:10 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33207559&tid=1477786]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 468ms |

| 0 / 0 |
