powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
25 сообщений из 108, страница 3 из 5
А много ль затрат при передаче огромных объектов по ссылке?
    #38091917
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyпропущено...
Откуда этот бред высосан?Объект может оказаться структурой.По волшебству что ли?
Это в js сплошь и рядом, а в строго типизированном языке написание процедуры, принимающей что попало (причем по ссылке) и потом это разруливающей, является признаком говнокодинга.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092026
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей Кпропущено...
Объект может оказаться структурой.По волшебству что ли?Причём тут "волшебство"? Приведён пример, когда в C# "объект полностью копируется".

AntonariyЭто в js сплошь и рядом, а в строго типизированном языке написание процедуры, принимающей что попало (причем по ссылке) и потом это разруливающей, является признаком говнокодинга.Из непонятого...
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092139
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПриведён пример, когда в C# "объект полностью копируется".Где?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092158
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей КПриведён пример, когда в C# "объект полностью копируется".Где?
Ты чё тупишь, чудило?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092198
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей КПриведён пример, когда в C# "объект полностью копируется".Где?Что?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092234
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Antonariy]Алексей Кпропущено...
Объект может оказаться структурой.По волшебству что ли?

Структура - наследний объекта, поэтому если в функцию, принимающую тип object ты будешь передавать структуру, то будет полное копирование этого "объекта".
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092263
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyпропущено...
Где?Что?
Этот товарисч недавно осилил что такое IEnumerable, а ты ему про структуры вещаешь.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092272
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Что?
Этот товарисч недавно осилил что такое IEnumerable, а ты ему про структуры вещаешь.Ага, видел. :-)
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092290
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСтруктура - наследний объекта, поэтому если в функцию, принимающую тип object ты будешь передавать структуру, то будет полное копирование этого "объекта".Ну так это частный случай для структур. В общем же случае объект не копируется.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092294
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К blest
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092297
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Гумно тема
Автору читать тынц аки FastCall в низу страницы
сам не проверял, но уверен что правда.
зы Пил...
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092325
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиГумно тема
+1

Где-то в степизы Пил...
Ну вот...
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092335
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
Гумно тема
Автору читать тынц аки FastCall в низу страницы
сам не проверял, но уверен что правда.
зы Пил...

Кстати классная статья.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092356
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Я вчера пробовал читать, кеш да кеш, какой кеш? и даже согласился с автором. что при передаче по ссылки весь объект из кучи
грузим в стек и долго ночью ворочался в досаде - почему они так сделали..., а оно вон видишь как......... ))
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092798
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Автор статьи, о которой говорит автор, имеет ввиду следующее.

На концептуальном уровне это все выглядеть как IL,GC,stack, но это все концептуально. Под капотом все таки крутится набор команд процессора (IL --JIT---> asm), которые оперируют регистрами, константами, и адрессацией в памяти. И таки эти команды ничего не знают про GC для них это просто ячейки памяти, кеш, регистры. И значение переменной в конкретно взятый момент запросто может сидеть в памяти или регистре или в кеше.

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

В инете полно статей про всякий deep inside.

Автор вопроса задал правильный вопрос. И он очень интересен. Автор вопроса молодец. Другое дело, что на практике в целях оптимизации выгоднее положиться на более детерменированный сценарий C++ с ассемблерными вставками. А если это нужно использовать из. net, то это может быть обертка на c++/cli или pinvoke.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092859
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по тому, что я начитался, обратиться к кешу процессор напрямую (указать адрес в кеше, например) нельзя даже из ассемблера. Это внутренняя вотчина процессора и он сам ей управляет. Тогда единственный плюс ассемблерных вставок по отношению к попыткам "уложиться в кеш" на языке высокого уровня под виртуалной машиной (Дотнет, например), это то, что есть гарантия, что на ассемблере кроме тех данных, что вы используете в данный момент, виртуальная машина не потащит в кеш ещё чего-нибудь. Т. е. для виртуальной машины и разных высокоуровневых библиотек по отношению к объёмам кеша процессора надо вводить понятие "доступно пользователю", как в своё время на коммуникаторах с маленькой памятью было. Скажем, кеш 7 МБ, а при программировании под виртуальной машиной он постоянно на 3 МБ забит всякими служебными данными вертуальной машины. Так что попытки уложиться в 7 МБ могут просто ни к чему не привести.

Но при этом непонятно, как отследить, сколько в данный момент отправлено служебных данных. Если вызывать функции, показывающие, сколько в данный момент памяти занимает такой-то объект, то это будет относиться только к ОЗУ, а не к кешу, как я понимаю. Т. е. такие попытки мониторинга для высокоуровневых систем обречены на провал без специальных инструментов (которых, может, и нет). Ну т. е. да, согласен с автором выше, что лучше не заморачиваться "экономией памяти" в Дотнете и использовать более контролируемые в этом смысле ассемблерные вставки. Хотя, опять же, понятие "доступно пользователю" бы не помешало, ибо использование обёрток не загромождает ли кеш так же служебными данными, как и при попытках "экономить" чисто под виртуальной машиной? Ведь вызоввы этих обёрток происходят всё равно из-под виртуальной машины.

И ещё вопрос. Как я понимаю, под ассемблером вы понимаете именно процессорный ассемблер, а не какой-нибудь CIL? На CIL распространяется вся эта виртуальщина со сборками мусора и управляемостью, да? Тогда вопрос: какое может быть преимущество в написании каких-нибудь кусков кода непосредственно на CIL?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38092861
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320 какое может быть преимущество в написании каких-нибудь кусков кода непосредственно на CIL?
вы определитесь , што вам треба, какая задача стоит. а уж потом лезте в методы решения.
максимальное быстродействие можно достичь целым спектром методов, помимо асма.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38093044
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-eruser7320 какое может быть преимущество в написании каких-нибудь кусков кода непосредственно на CIL?
вы определитесь , што вам треба, какая задача стоит. а уж потом лезте в методы решения.
максимальное быстродействие можно достичь целым спектром методов, помимо асма.
Т. е. при определённых условиях много есть каких преимуществ при написании кода на CIL вместо какого-нибуди СиШарпа, помимо чисто академических целей "а как же это работает там внутри"?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38093450
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Скажем, кеш 7 МБ, а при программировании под виртуальной машиной он постоянно на 3 МБ забит всякими служебными данными вертуальной машины. Так что попытки уложиться в 7 МБ могут просто ни к чему не привести.
А тест вообще пробовал какой-нибудь замутить?

Ну типа делаем много всякой арифметики над куском в метр, потом следующий, еще один и т.д.

Потом по два метра тоже самое.

Потом по 4.

И проанализировать отличия по времени. Одной и той же длительной работы, но с разной порционностью. Главное, чтобы она действительно была одна и та же (в сумме над всеми данными).
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38093464
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragonuser7320Скажем, кеш 7 МБ, а при программировании под виртуальной машиной он постоянно на 3 МБ забит всякими служебными данными вертуальной машины.

виртуальной машины нет, есть нативный исполняемый код как результат JIT компиляции.
временные переменные на стеке при нехватке регистров или для обмена с FPU -точно такие же как и при обычной компиляции с языков типа Паскаль и С.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38093467
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

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

Стоп, давай определимся с терминами. Что ты имеешь ввиду по словом "кеш"? Покажи пример кода, как ты кешируешь данные.
Кеш - это кеш процессора. Я не знаю, когда я кеширую данные. В том-то и штука. Как я из СиШарпа узнаю, что я данные в данный момент кеширую? Я могу только сказать, что если я в данные момент работаю с какой-то переменной, то её значение и её адрес прошли через кеш.

авторЕще раз - давай на пальцах (с примерами кода), откуда, что и как ты получаешь в виде исходных данных.
У меня есть класс в отдельной сборке, в котором есть основная функция расчёта. Программа загружает мою сборку и передаёт моей функции один объект, который содержит в своих полях и настройки, и массивы данных. Моя функция расчёта по мере продвижения этого расчёта берёт разные части входящего объекта.

Ну вот, например, не придираясь к правильности кода:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class
{

void Func(Settings sett)
{

List<double> list = new List<double>();

for(int i = 0; i < sett.Array1.Length; i++)
{
list.Add(Interpolation(set.Array1, i - shoulder, i + shoulder));
}

}

}



Буквари я погуглю про кучи и управление памятью, но попозже.

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

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

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

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

Где лучше, для чего лучше?
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 3 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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