|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatЕвгенийВ, Зато много раз видал, как из-за статиков утечки памяти возникают. Утечки памяти на платформе со сборкой мусора, Карл. Собственно, статик это фактически, наверное, единственный способ утечку памяти вызвать. Хотя, если, честно, то с синглетоном тоже такую бяку легко сделать. А ну ка друг мой, приведи работающий пример утечки памяти из за статиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:39 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatЕвгенийВпропущено... А потом, если продукт взлетит, упрешься в перфоманс и вернешься к статикам. Повернутые на оптимизации? Я в жизни не видал, чтобы проблемы с перформансом были именно из-за использования нестатиков вместо статиков. Вот из-за чего угодно видал, но только не из-за этого. Ты еще начни сравнивать сколько процессорных тактов на тот или иной вызов уходит. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
callvirt - Карл! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:47 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВAntonariyВ общем, я понял: А потом, если продукт взлетит, упрешься в перфоманс и вернешься к статикам.А я от них и не бегал) Наоборот, заметил панику в этой теме - "только для расширений!!11". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:47 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Плюс Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:48 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВfkthatЕвгенийВ, Зато много раз видал, как из-за статиков утечки памяти возникают. Утечки памяти на платформе со сборкой мусора, Карл. Собственно, статик это фактически, наверное, единственный способ утечку памяти вызвать. Хотя, если, честно, то с синглетоном тоже такую бяку легко сделать. А ну ка друг мой, приведи работающий пример утечки памяти из за статиков. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Наиболее часто встречающаяся ситуация сродни этой - это подписаться на какой-нибудь статический ивент, а потом от него не отписаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:58 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Проще говоря вызов через инстанц. 1. Создание объекта - выделение памяти. 2. Сохранение ссылки на него в памяти. 3. Извлечение ссылки из памяти в стек (this передается первым параметром в метод) 4. Поиск ссылки на метод в таблице виртуальных методов 5. Вызов метода 6. GC собирает объект Это те пункты, которых не будет при вызове статик метода. Не нужен в методе this - делай статик! Нужен простой публичный утилитный метод - суй его в статик класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 14:59 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthat Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Ты привел очень сложный пример, попробуй так Код: c# 1.
Не путай нехватку памяти и утечку памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:03 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВ callvirt - Карл! Что мне твой машинный код - ты приведи реальный пример из жизни, когда бы статик/нестатик реально влиял на производительность. Так и представил себе какое-нибудь десктопное приложение тормозящее из-за того что там вместо статиков нестатики. А сallvirt ничего не означает - он используется для вызова любого инстанс-метода, хоть виртуального, хоть нет. Вызываются они при этои по разному. Иначе все методы были бы виртуальными, как в Java, кажись - кстати, что-то не слышал, чтобы они из-за этого изстрадались. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:04 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВНе нужен в методе this - делай статик! Нужен простой публичный утилитный метод - суй его в статик класс. И пиши все на статиках, блеат. Ога. :- D ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:06 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Смахивает на юношеский максимализм\нигилизм. Все полезно в меру. Мне кажется проблема больше не в статических методах, а в статических полях, а какой метод, статический или нет, это дело десятое ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:08 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
ЕвгенийВНе путай нехватку памяти и утечку памяти. Там и есть именно утечка памяти. Но, поскольку, судя по твоему прошлому сообщению ты имеешь очень слабое представление о том как на самом деле в .NET работает выделение памяти и GC, то объяснять тебе тут это получится слишком долго. Начни лучше с чтения Рихтера, что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:10 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Roman MejtesСмахивает на юношеский максимализм\нигилизм. Все полезно в меру. Мне кажется проблема больше не в статических методах, а в статических полях, а какой метод, статический или нет, это дело десятое Нет, не десятое. Статический метод означает что все что от него зависит должно его вызывать напрямую и, значит, зависеть от него напрямую. Есть принципы SOLID, и это их нарушает (тот, что "D"). Эти принципы придумали люди, которые намного умнее и опытнее и меня и тебя вместе взятых - мне этого уже достаточно, чтобы стараться им следовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:14 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatЕвгенийВ callvirt - Карл! Что мне твой машинный код - ты приведи реальный пример из жизни , когда бы статик/нестатик реально влиял на производительность. Так и представил себе какое-нибудь десктопное приложение тормозящее из-за того что там вместо статиков нестатики. А сallvirt ничего не означает - он используется для вызова любого инстанс-метода, хоть виртуального, хоть нет. Вызываются они при этои по разному. Иначе все методы были бы виртуальными, как в Java, кажись - кстати, что-то не слышал, чтобы они из-за этого изстрадались. HttpClient ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:42 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatRoman MejtesСмахивает на юношеский максимализм\нигилизм. Все полезно в меру. Мне кажется проблема больше не в статических методах, а в статических полях, а какой метод, статический или нет, это дело десятое Нет, не десятое. Статический метод означает что все что от него зависит должно его вызывать напрямую и, значит, зависеть от него напрямую. Есть принципы SOLID, и это их нарушает (тот, что "D"). Эти принципы придумали люди, которые намного умнее и опытнее и меня и тебя вместе взятых - мне этого уже достаточно, чтобы стараться им следовать. под нагрузкой IoC добавляет тормозов. лично я на затыки тут не натыкался, но, теоретически, они могут быть ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:48 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatRoman MejtesСмахивает на юношеский максимализм\нигилизм. Все полезно в меру. Мне кажется проблема больше не в статических методах, а в статических полях, а какой метод, статический или нет, это дело десятое Нет, не десятое. Статический метод означает что все что от него зависит должно его вызывать напрямую и, значит, зависеть от него напрямую. Есть принципы SOLID, и это их нарушает (тот, что "D"). Эти принципы придумали люди, которые намного умнее и опытнее и меня и тебя вместе взятых - мне этого уже достаточно, чтобы стараться им следовать.Эти принципы придумали люди, исходя из собственной конкретной практики, которая может в значительной мере отличаться от любой другой практики. Слепое и маниакальное следование всем этим принципам превращает хэлло ворлд в многослойное говно, в котором абстракция на абстракции едет и абстракцией погоняет, в результате чего вообще непонятно, как это работает, и куда заныкана реализация. А если еще и DI прикручено - вообще туши свет. Как раз с таким хелловорлдом я на днях мучался. Тот, кто его писал, по-моему применил все принципы, паттерны и бест-кейсы, которые знал. Казалось бы, тривиальная задача - сохранить дюжину настроек в xml: формочка + save/load, да еще до сервера достучаться, чтобы логин/пароль проверить. И задача эта разбита на 4 (четыре, карл!) проекта. В одном модели и абстракции для UI, в другом модели и абстракции для хранилища, 3 и 4, соответственно UI (из одной формочки) и хранилище. В результате workflow этого говна совершенно невразумительно. Не говоря уж о том, что на все 4 кучки нужны ссылки в основном проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:53 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
love_bachfkthatпропущено... Нет, не десятое. Статический метод означает что все что от него зависит должно его вызывать напрямую и, значит, зависеть от него напрямую. Есть принципы SOLID, и это их нарушает (тот, что "D"). Эти принципы придумали люди, которые намного умнее и опытнее и меня и тебя вместе взятых - мне этого уже достаточно, чтобы стараться им следовать. под нагрузкой IoC добавляет тормозов. лично я на затыки тут не натыкался, но, теоретически, они могут быть да, да, ребята из stackoverflow по этой причине и не используют DI правда нам до их нагрузок как пешком до Луны, но это же мелочи, правда? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 15:55 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
AntonariyЭти принципы придумали люди, исходя из собственной конкретной практики, которая может в значительной мере отличаться от любой другой практики. А инженеры Тойоты придумали что надо заправлять её 98-м бензином, потому что им это во сне приснилось. Но мы-то умнее их и лучше их машину знаем - так что будем экономить и в соседнем колхозе заливать 76-й. Вот же белять, российский менталитет. Напиши человеку аршинным капсом, что сюда лезть нельзя, потому что током долбанет, но, он все равно решит, что ему виднее, чем тому, кто это писал и обязательно туда полезет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:24 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
Roman MejtesСмахивает на юношеский максимализм\нигилизм. Все полезно в меру. Мне кажется проблема больше не в статических методах, а в статических полях, а какой метод, статический или нет, это дело десятое Статические поля - сразу же возможная засада с thread-safety. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:27 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
love_bachHttpClient Cерьезно? HttpClient потенциально тормозной не из-за того что в интернет лезет, а из-за того, что он не статический? Ты хоть понял, что ты за бугагос сейчас написал? Кстати, это еще один класс, который у нас везде завернут в обертку с интерфейсом. Ибо писать и гонять юнит-тесты, которые зависят от каких-то других сетевых сервисов, это было бы вообще писец. Точнее это были бы вообще даже близко не юнит тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:31 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
love_bachлично я на затыки тут не натыкался Первый же запрос к i/o (БД, хттп, файловая система) накроет все дополнительные расходы на виртуальные вызовы, DI и подобное, как бык овцу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:38 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatAntonariyЭти принципы придумали люди, исходя из собственной конкретной практики, которая может в значительной мере отличаться от любой другой практики. А инженеры Тойоты придумали что надо заправлять её 98-м бензином, потому что им это во сне приснилось. Но мы-то умнее их и лучше их машину знаем - так что будем экономить и в соседнем колхозе заливать 76-й.А я тоже могу придумать якобы аналогию, которая на самом деле нифига не аналогия, и выставить себя дураком. Но я-то умнее, поэтому делать этого не буду. Автомобиль не поставляется в виде конструктора "сделай сам", в отличие от нашей предметной области. fkthatВот же белять, российский менталитет. Напиши человеку аршинным капсом, что сюда лезть нельзя, потому что током долбанет, но, он все равно решит, что ему виднее, чем тому, кто это писал и обязательно туда полезет.Глупость, написанная капсом, умностью не становится. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:44 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatlove_bachHttpClient Cерьезно? HttpClient потенциально тормозной не из-за того что в интернет лезет, а из-за того, что он не статический? Ты хоть понял, что ты за бугагос сейчас написал? Кстати, это еще один класс, который у нас везде завернут в обертку с интерфейсом. Ибо писать и гонять юнит-тесты, которые зависят от каких-то других сетевых сервисов, это было бы вообще писец. Точнее это были бы вообще даже близко не юнит тесты. Ну вашето это не я только натыкался. Народ юзал Статик, и МС пошёл навстречу страждущим и сделал фабрику - тот же Статик, только с интеллигентным лицом ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 16:47 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
AntonariyГлупость, написанная капсом, умностью не становится. AntonariyНо я-то умнее ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 17:16 |
|
Инициализация статического класса
|
|||
---|---|---|---|
#18+
fkthatlove_bachлично я на затыки тут не натыкался Первый же запрос к i/o (БД, хттп, файловая система) накроет все дополнительные расходы на виртуальные вызовы, DI и подобное, как бык овцу. ну, есть же поддержка async в проваедерах БД, хттп... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 18:29 |
|
|
start [/forum/topic.php?fid=20&msg=39811423&tid=1398948]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 255ms |
0 / 0 |