powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
25 сообщений из 108, страница 4 из 5
А много ль затрат при передаче огромных объектов по ссылке?
    #38109023
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер?Мне кажется, что ничего.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38109595
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилuser7320Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать?

сферический конь в вакууме.

Где лучше, для чего лучше?
Лучше с точки зрения производительности, потребления памяти.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38110102
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Лучше с точки зрения производительности, потребления памяти.
это называется преждевременная оптимизация. Узкое место вызовы и передача параметров?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38110112
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320SeVaПрежде, чем озадачиваться оптимизацией на уровне регистров, лучше разобраться, что происходит во время такого косяка как list.add. Одно это убьет всю производительность на корню. Первый принцип разработки эффективного кода на net - минимизация выделения памяти.
Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер?

И меня всё равно интересует вопрос в моём предыдущем посте - есть ли разница при передаче по ссылке объектов разного размера?

Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать?


Эмм... учи net: yeild, отложенное выполнение. Пройдись рефлектором по своему list.add, очень много интересного увидишь, сразу поймешь, что про регистры можно забыть
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38110385
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилuser7320Лучше с точки зрения производительности, потребления памяти.
это называется преждевременная оптимизация. Узкое место вызовы и передача параметров?
Да кто его знает. Лучше у умных людей заранее спросить, стоит делать то-то или не стоит.

SeVauser7320пропущено...

Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер?

И меня всё равно интересует вопрос в моём предыдущем посте - есть ли разница при передаче по ссылке объектов разного размера?

Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать?


Эмм... учи net: yeild, отложенное выполнение. Пройдись рефлектором по своему list.add, очень много интересного увидишь, сразу поймешь, что про регистры можно забыть
Да я уже забыл про регистры. Вы просто скажите, есть разница передавать по ссылке большие или маленькие объекты в функцию?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38110407
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320есть разница передавать по ссылке большие или маленькие объекты в функцию

нет. потому что передается сама ссылка, а не объект.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111033
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111081
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
Это знаете как в том анекдоте про чукчу
Чукча пришел на экскурсию на фабрику где конфеты мастерят, ну его водят по цехам, всю технологию
разжевывают
на выходе:
-Понял?
-Ага, только не понятно, как начинка внутри конфеты оказывается..
Есть еще старый студенческий коломбур жутко матерный ( на бис)
Зы сделайте консоль и посмотрите как компилятор оптимизирует ваш код, и что будет лежать в стеке,
если все это не понятно ( стеки, указатель, куча .....) зачем все это спрашивать, если ответ все равно уже дали выше а до вас не дошло..
Я это сказал без обид, Вам о этом рано рассуждать, вам базу учить надо..
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111108
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля?
кроче, с таким подходом к вопросу производительности ваш код будет всегда хуже , нежеле копилятор в лоб сделает.
в вопросах оптимизации сначала идёт задача, а уже потом попытки её ускорения.
да , и ещё. плохо реализованный , но великолепный алгоритм, будет работать быстрее отлично реализованного , но слабенького алгоритма.

на затравку
Код: c#
1.
2.
3.
 string[]SSS=new string[2000000];
 for (int q = 0; q < 2000000; q++)         SSS[q] = "qqutyutyqq" ;     // 0.05 секунд
 for (int q = 0; q < 2000000; q++)         SSS[q] = "qqutyutyqq" +q;   // ???? секунд

во сколько раз второй цыкл будет работать дольше. так , в уме прикинньте. а потом проверьте на компе )))
вот так просто может развалится вся оптимизация.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111121
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля?

С точки зрения производительности и потребления памяти при прочих идеальных условиях и некриворуковсти программиста все идентично. Но исходя из ваших вопросов я советую использовать одну ссылку на большой объект и доставать всё, что нужно из него. В первом варианте есть большая вероятность, что вы наделаете ошибок

Но если брать в общем, то подход стандартный - передавать в функцию только нужные ей параметры, чтобы избежать повреждения данных. Помимо прочего это позволит методу быть статичным
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111379
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erво сколько раз второй цыкл будет работать дольше. так , в уме прикинньте. а потом проверьте на компе )))
вот так просто может развалится вся оптимизация.
Я только знаю, что конкатенация работает очень медленно. Поэтому везде в руководствах пишут, что надо умещать всю строку в одну, когда это можно. И если компилятор может заранее склеить строки, которые конкатенацией образованы из-за того, что в экран одна большая строка не влезла, когда программист код писал, то в других случаях он может и не догадаться.

Я вообще сейчас уже начал не для вопросов особого быстродействия спрашивать, а просто для интереса. Получается, что разница реально в основном только в том, что в случае кучи разных полей, переданных в качестве параметров, будет просто больше переменных занято на хранение ссылок (адресов), чем когда один объект? Это всё?

авторЕсть еще старый студенческий коломбур жутко матерный ( на бис)
Зы сделайте консоль и посмотрите как компилятор оптимизирует ваш код
У меня из студенческого вспоминается только эпитаксия и барьер Шоттки, и то я их забыл уже давно. )))


Всем спасибо, что повозились со мной. Я трудный. ))
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111416
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я только знаю, что конкатенация работает очень медленно.
ну если там проблема только в сложении строк, попытайтесь оптимизировать алгоритм.
так, что бы в памяти болталось 2.000.000 объектов, содержащих строку. что бы время было как можно ближе к первому цыклу.
сделайте, и тогда поймёте , что количество передаваемых параметров , если и влияет на скорость, то настолько незначительно , что этим можно пренебречь.
вам же просто для интереса. ну вот и дерзайте. надеюсь после решения этой задачки , странных вопросов будет меньше.


зы. проблема там ессесна не только в конкатенации )))
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111447
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Ну, насколько я знаю, рекомендуют использовать СтрингБилдер и Аппенд. Конкатенация создаюёт каждый раз новую строку - выделение памяти и всё такое.

Испытывать ваш пример не стал - неохота. Извините. ))
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111450
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, я ещё могу предположить, что поскольку вы перезаписываете SSS, и при этом значениями, бОЛьшими по длине, чем были, то надо будет сделать реорганизацию оперативной памяти (дефрагментация и прочее) - т. е. сборщик мусора начнёт тормозить программу.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111501
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ну, я ещё могу предположить, что поскольку вы перезаписываете SSS, и при этом значениями, бОЛьшими по длине, чем были, то надо будет сделать реорганизацию оперативной памяти (дефрагментация и прочее) - т. е. сборщик мусора начнёт тормозить программу.
опять мимо кассы.
размер нового значения не имеет значения.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111507
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо в оптимизаторе отключить проверку на выход за границы массива?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111509
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Надо в оптимизаторе отключить проверку на выход за границы массива?
тебе - не надо
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111514
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Испытывать ваш пример не стал - неохота. Извините. ))
а зачем спичь о скорости , если с простейшей задачей оптимизации не можешь справиться.
скорость работы второго цыкла легко и непринуждённо увеличивается как минимум втрое. ( проверка на размер массива не поможет).
а можно ускорить и ещё в большее число раз. до 10.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111535
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320чем были, то надо будет сделать реорганизацию оперативной памяти
короче, оптимальное решение задачи - оптимизации выполнения 2го цыкла будет по времени практически такое же, что и исполнение первого цыкла.
затраты на решение = максимум 2 минуты.
когда сделаете, поймёте , что не в регистрах щастье.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111603
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-eruser7320чем были, то надо будет сделать реорганизацию оперативной памяти
короче, оптимальное решение задачи - оптимизации выполнения 2го цыкла будет по времени практически такое же, что и исполнение первого цыкла.
затраты на решение = максимум 2 минуты.
когда сделаете, поймёте , что не в регистрах щастье.
Речь не идёт об unsafe-коде?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111613
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Речь не идёт об unsafe-коде?в данном случае , можно и без него.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111629
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Я просто удаляю первый цикл как бесполезный - всё равно второй делает то же самое и больше.

2. Я заменяю всю эту фигню одной функцией, которая принимает параметр - число, и возвращает вот эту строку, которую вы два миллиона раз пишете, сконкатенованную с числом-параметром.

3. Это вопрос с заковыкой. Правильный ответ - не думать об этом вопросе. Таким образом можно реально ускорить производительность и разработку другого, более умного кода, просто перестав думать о более глупом.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111658
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erчто не в регистрах щастье
а в их количестве :)
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111705
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user73203. Правильный ответ - не думать об этом вопросе.
так и запишем - студенту низачьод. не справился с элементарной задачей оптимизации.
причём задачей не абстрактной , а в полне конкретной. в жизни встречающейся.


Изопропила в их количестве :)
взвестье полкило
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38111747
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я удалил ненужный цикл и вообще заменил его функцией. Вы же на сказали, для каких задач этот массив нужен. Если вам постоянно нужны два миллиона строк с возрастающих числом на конце, то это одно. А если время от времени строка с числом на конце - то функция с параметром (в виде лямбды-делегата) лучший выход.
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 4 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]