powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / А много ль затрат при передаче огромных объектов по ссылке?
108 сообщений из 108, показаны все 5 страниц
А много ль затрат при передаче огромных объектов по ссылке?
    #38090328
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот есть у меня сборная солянка настроек и входных данных, организованных под одним большим объектом (типа Settings). Настройки - много маленьких переменных, организованных в разных классах и подклассах, входные данные - несколько больших коллекций (до сотен тысяч даблов). Мне удобно всё хранить в одном объекте, т. к. есть сценарии, где это всё передаётся куда-нибудь далеко через сеть.

Надо передать мне этот объект в функцию на расчёт. Как это происходит и какие затраты при этом будут?

Вот хранится объект этот в ОЗУ. Вот я вызываю функцию, в которую передаю этот объект по ссылке. В этой функции из объекта используются не все данные, а входные в указанных пределах (т. е. циклом for, например, прохожусь где-нибудь по двум тысячам элементов из исходных ста тысяч, причём берутся эти две тысячи где-нибудь из середины) и настройки из полей разной вложенности. Вопросы, что при этом происходит:

1) при этом в кеш процессора грузится весь объект?

2) если не весь, то коллеция, из которой я прохожусь только по части, грузится в кеш вся или только в указанных пределах?


А то я тут прочитал, что надо все расчёты укладывать в кеш, тогда разницы между что вашим ассемблером, что СиШарпом почти не будет. А если в кеш не укладываешься, то простое обращение к ОЗУ снижает производительность уже на порядок из-за задержек и простоев ЦПУ.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090333
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А то я тут прочитал, что надо все расчёты укладывать в кеш, тогда разницы между что вашим ассемблером, что СиШарпом почти не будет. А если в кеш не укладываешься, то простое обращение к ОЗУ снижает производительность уже на порядок из-за задержек и простоев ЦПУ.

где прочитал?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090351
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation, в любом языке программирования при передачи объекта по ссылке передается не сам объект, а адрес в памяти этого объекта.
То есть затрат при передачи "практически" и не будет.
Если передаешь объект по значению, то объект полностью копируется. Операции в памяти, особенно копирование в современное время очень быстрые.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090361
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320циклом for, например, прохожусь где-нибудь по двум тысячам элементов из исходных ста тысяч, причём берутся эти две тысячи где-нибудь из середины) и настройки из полей разной вложенности
Ты уверен, что нужно всё это скоупом инициализить? Посмотри на вариант получения параметра по требованию.
Получил конкретное значение - положил в кеш (на определенное t).
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090364
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
авторвашим ассемблером, что СиШарпом почти не будет
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090367
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвашим ассемблером, что СиШарпом почти не будет
да, да , не будет. особенно если асмом гвозди заколачивать, и не использовать расширенный набор команд.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090442
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtespation, в любом языке программирования при передачи объекта по ссылке передается не сам объект, а адрес в памяти этого объекта.
То есть затрат при передачи "практически" и не будет.
Если передаешь объект по значению, то объект полностью копируется. Операции в памяти, особенно копирование в современное время очень быстрые.

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

ТС имеет ввиду процесорный кэш
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090454
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationМСУПолучил конкретное значение - положил в кеш (на определенное t).
ТС имеет ввиду процесорный кэш
Я понял, что речь идет о TLB и иже с ним, я имею ввиду, что задумываться об этом вообще не надо, да и вредно.
За всякие грабли типа этого нужно расстреливать на месте, не говоря о том, что еще под вопросом, как он будет считывать и записывать объект в процессорный кеш. Короче, идиотизм это.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38090503
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,

и каким образом можно сказать "положите это в кеш"? этим разве не сам процессор занимается?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091224
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationuser7320А то я тут прочитал, что надо все расчёты укладывать в кеш, тогда разницы между что вашим ассемблером, что СиШарпом почти не будет. А если в кеш не укладываешься, то простое обращение к ОЗУ снижает производительность уже на порядок из-за задержек и простоев ЦПУ.

где прочитал?
Сейчас ссылку не приведу, но это была одна из статей на МСДН от создателя Дотнета, за 2003 год. Название, как-то связанное с производительностью.

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

Насчёт "скопом инициализировать" - да прсто это исходные данные такие. Я получаю настройки и массивы чисел в виде исходных данных. Обрабатываю числа, используя настройки. Поскольку на каждом этапе расчёте используется свой набор настроек и свой массив чисел, то думаю, не проще ли в каждую функцию расчёта передавать сразу весь объект настроек, чем выделять из него кучку перепенных и массивы?

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

beg-in-erавторвашим ассемблером, что СиШарпом почти не будет
да, да , не будет. особенно если асмом гвозди заколачивать, и не использовать расширенный набор команд.
Насколько я знаю, это уже отсекает старые процессоры от вашей программы, а компиляторы заточены по умолчанию на максимальнуюж совместимость. Т. е. если настроить на последние модели процев с их SSE4,5,...25, то разница будет буквально минимальной в большинстве случаев.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091227
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationuser7320А то я тут прочитал, что надо все расчёты укладывать в кеш, тогда разницы между что вашим ассемблером, что СиШарпом почти не будет. А если в кеш не укладываешься, то простое обращение к ОЗУ снижает производительность уже на порядок из-за задержек и простоев ЦПУ.

где прочитал?
http://msdn.microsoft.com/en-us/library/ms973852.aspx

Глава "Of Cache Misses, Page Faults, and Computer Architecture".

авторNow our fastest PCs can issue up to ~9000 operations per microsecond, but in that same microsecond, only load or store to DRAM ~10 cache lines. In computer architecture circles this is known as hitting the memory wall. Caches hide the memory latency, but only to a point. If code or data does not fit in cache, and/or exhibits poor locality of reference, our 9000 operation-per-microsecond supersonic jet degenerates to a 10 load-per-microsecond tricycle.

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

А кстати, когда на ассемблере пишешь, там есть разные адресные пространства для каждого уровня кеша и для ОЗУ? Вот на C# или С++ попробуйте обратиться к адресу переменной на каком-нибудь уровне кеша. По-моему, это вообще не контролируется из языка такого уровня - максимум доступ к ОЗУ есть. Разве нет?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091244
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Разве нет?
неа, просто думать нужно что происходит с кэшом данных при обработке больших массивов
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091247
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилuser7320Разве нет?
неа, просто думать нужно что происходит с кэшом данных при обработке больших массивов
А чего тут думать? - Знать надо.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091249
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

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

ОК. Дальше работаю не со всем массивом, а только в каком-то диапазоне, начальный и конечный индексы которого тоже в функцию передаю. Теперь в кеше уже адрес первого элемента массива и два индекса. Так?

Дальше иду for'ом по массиву, где, скажем, складываю по десять соседних элементов массива, делю результат на десять (интерполяция) и записываю результат в другой массив. Теперь уже на каждой итерации цикла for в кеше адрес первого массива, два индекса, значения десяти элементов первого массива, адрес второго массива и адрес ячейки второго массива, в которую я записываю результат интерполяции. Примерно так?

Есил так, то я не выхожу за пределы кеша, т. к. не гружу все массивы в него. Я крут?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091256
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Дело в том, что я не знаю, когда данные переносятся в кеш, а когда остаются в ОЗУ.
Стоп, давай определимся с терминами. Что ты имеешь ввиду по словом "кеш"? Покажи пример кода, как ты кешируешь данные.

user7320Вот, скажем, расчёт в теле текущей функции идёт в кеше, а параметры, переданные в эту функцию, тоже в кеше, или всё еще в ОЗУ и в кеш отправятся, когда к ним непосредственно обратятся?
Я не понимаю на языке инопланетян - объясни, что такое "расчёт в теле текущей функции идёт в кеше". Это что-то из области фантастического воспалённого воображения...

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

user7320не проще ли в каждую функцию расчёта передавать сразу весь объект настроек, чем выделять из него кучку перепенных и массивы?
Передавай, конечно. В чем проблема-то?

user7320Я так понимаю, что если я передам в функцию весь объект по ссылке, но буду использовать не все его части, то в кеш пойдут только те его части, которые я буду использовать, а не весь объект целиком. Правильно?
Мля, какой такой "кеш", ты о чем? Я тут погадал на кофе и мне подсказала интуиция, что у тебя с основами .NET проблема. Срочно читать про стек, кучу, GC, управление памятью, и т.д. Гугли буквари типа Рихтера.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091273
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ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));
}

}

}



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

user7320Я не знаю, когда я кеширую данные. В том-то и штука. Как я из СиШарпа узнаю, что я данные в данный момент кеширую? Я могу только сказать, что если я в данные момент работаю с какой-то переменной, то её значение и её адрес прошли через кеш.
1. То есть ты не знаешь, когда кешируешь данные, но при этом ты точно уверен, что их кешируешь?
2. Бред сивой кобылы. Срочно читай основы .NET и перестань молоть языком про "кеш процессора".

user7320Ну вот, например, не придираясь к правильности кода
Причем тут кеш, тем более - процессора?

user7320Буквари я погуглю про кучи и управление памятью, но попозже.
Давай наоборот, друх? Сначала покури буквари, а потом мы вместе посмеемся над тем, какие глупости ты тут постил.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091285
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я не знаю, когда я кеширую данные.
Объясни цель этого знания.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091289
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091291
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗабудь о нём при работе с .NET. Договорились?
А чего тогда Jan Gray о нём говорит? http://msdn.microsoft.com/en-us/library/ms973852.aspx
Пишет о Дотнете, а говорит а кеше процессора.

автор1. То есть ты не знаешь, когда кешируешь данные, но при этом ты точно уверен, что их кешируешь?
2. Бред сивой кобылы. Срочно читай основы .NET и перестань молоть языком про "кеш процессора".
Да хоть куча, хоть стек - если я работаю СЕЙЧАС с этой переменной, то она в кеше БЫЛА ИЛИ ЕСТЬ, и вообще СЕЙЧАС она в конвейере процессора, в регистрах данных. Но мне туда доступа нет.

Жан Грей заикнулся про кеш и сказал, что негоже, мол, выходить за рамки кеша при вычислениях. Я так понимаю, что я могу это ПРИБЛИЗИТЕЛЬНО контролировать, не запрашивая огромные массивы данных без надобности. Т. е. это доступно даже для дотнетчиков с их управляемой памятью. Так?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091294
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУuser7320, к внимательному прочтению и освоению:

Автоматическое управление памятью
Автоматическое управление памятью в .NET
Сборка мусора
Сборка мусора
Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework
Garbage Collector Basics and Performance Hints
Я там слов "кеш" и "кэш" в смысле кеш процессора не встречал. Да и понятно, что эти кучи и стеки все в ОЗУ организуются. Я же про кеш процессора говорил.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091295
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Т. е. это доступно даже для дотнетчиков с их управляемой памятью

Не для всех.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091297
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А чего тогда Jan Gray о нём говорит? http://msdn.microsoft.com/en-us/library/ms973852.aspx
Пишет о Дотнете, а говорит а кеше процессора.
Он там и про машинные коды много чего рассказывает:регистры, call, xor, cmp и т.д. Почему ты не спрашиваешь нас, как юзать ассемблерные вставки в дотнете? Готов тебя разочаровать - их нет в .NET.

user7320Да хоть куча, хоть стек - если я работаю СЕЙЧАС с этой переменной, то она в кеше БЫЛА ИЛИ ЕСТЬ
Забудь слово кеш, десятый раз повторяю. Переменная может сидеть в стеке, а может в куче (адрес). Читай буквари, человек - тема сто раз пережевана на форуме.

user7320и вообще СЕЙЧАС она в конвейере процессора, в регистрах данных. Но мне туда доступа нет.
Ты с какой планеты, студент? :)

user7320Жан Грей заикнулся про кеш и сказал, что негоже, мол, выходить за рамки кеша при вычислениях.
Убей Жан Грея. И займись делом.

user7320Я так понимаю, что я могу это ПРИБЛИЗИТЕЛЬНО контролировать, не запрашивая огромные массивы данных без надобности. Т. е. это доступно даже для дотнетчиков с их управляемой памятью. Так?
Это недоступно. Забудь об этом (с) Донни Браско
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091299
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я там слов "кеш" и "кэш" в смысле кеш процессора не встречал. Да и понятно, что эти кучи и стеки все в ОЗУ организуются. Я же про кеш процессора говорил.
И не встретишь, а тем более про управление.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091301
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилuser7320Т. е. это доступно даже для дотнетчиков с их управляемой памятью

Не для всех.
Чего трудного понять, что кеш процессора маленький и лучше брать АМД, чем Интел и вообще АМД лучше не стоит в расчётах использовать слишком много данных сразу - стоит разделять расчёты на более мелкие задачи, тогда их можно будет проворачивать в кеше, не обращаясь на середине операции в ОЗУ за новой порицей. Обращаться стоит только переходя к новой подзадаче. Как-то так.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091304
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Изопропилпропущено...


Не для всех.
Чего трудного понять, что кеш процессора маленький и лучше брать АМД, чем Интел и вообще АМД лучше не стоит в расчётах использовать слишком много данных сразу - стоит разделять расчёты на более мелкие задачи, тогда их можно будет проворачивать в кеше, не обращаясь на середине операции в ОЗУ за новой порицей. Обращаться стоит только переходя к новой подзадаче. Как-то так.
Ну вот, скажем, я могу весь расчёт запихать в одну функцию. А могу разбить на подзадачи, потом ещё на подзадачи, где в каждый момент будет обрабатываться только небольшой объём данных. Тогда в первом случае у меня будет огромное число локальных переменных, включая тяжёлые массивы, и всё это с болшой вероятностью захочет попасть в кеш, вытесняя друг друга оттуда, а во-втором случае локальных переменных будет немного и в кеше им найдётся место всем. Такой уровень понимания доступен же дотнетчикам? Это вообще элементарная логика, по-моему.

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

мне кажется, что это вы не понимаете ответов, которые вам озвучивают.

На .Net нет языков, позволяющих управлять железом на уровне ассемблера. Компилятор сам выбирает нужное множество команд процессора. И сам рулит размещением данных в регистрах. А "конвейер команд" в применении к .Net вообще выглядит смешно. Код в любом языке будет исполняться быстрее, если там мало ветвлений. Тогда больше шансов на то, что процессор сможет предугадать следующие команды.

Что касается скорости, то один громоздкий метод будет работать быстрее, чем он же, декомпозированный на тысячу методов. Переход из метода в метод - не самая быстрая операция в .Net

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

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

от задачи зависит - на передачу данных в память GPU и обратно тоже нужно время.
в некоторых случаях AVX может дать лучший результат
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091322
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79user7320,

мне кажется, что это вы не понимаете ответов, которые вам озвучивают.

На .Net нет языков, позволяющих управлять железом на уровне ассемблера. Компилятор сам выбирает нужное множество команд процессора. И сам рулит размещением данных в регистрах. А "конвейер команд" в применении к .Net вообще выглядит смешно. Код в любом языке будет исполняться быстрее, если там мало ветвлений. Тогда больше шансов на то, что процессор сможет предугадать следующие команды.

Что касается скорости, то один громоздкий метод будет работать быстрее, чем он же, декомпозированный на тысячу методов. Переход из метода в метод - не самая быстрая операция в .Net

Если у вас какая то мания насчет сверхскорости исполнения задач, переходите на чистый C/С++. Преимущество dotNet не в сверхскорости работы программ, а в сверхскорости разработки этих программ.
Т. е. никаких рекомендаций про мой первоначальный вопрос дать в мире Дотнета нельзя? Хошь, цельный объект передавай. Хошь, по частям. Всё равно мой код пройдёт через такую кучу интерпретаторов-компиляторов, а возможности котроля не то, что ограничены, а вообще отсутствуют, так что как-то повлиять на конечный результат не представляется возможным?
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091326
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320а возможности котроля не то, что ограничены, а вообще отсутствуют, так что как-то повлиять на конечный результат не представляется возможным?
Ну кое-какие возможности контроля для оптимизации всё-таки есть, например отключение проверки на границы массива. Тут писал: http://codearticles.ru/Home/ArticleView/548
Для этого нужно переключиться в небезопасный код. Но это всё зло, как уже сказали, дотнет не для этого сделан.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091333
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Т. е. никаких рекомендаций про мой первоначальный вопрос дать в мире Дотнета нельзя? Хошь, цельный объект передавай. Хошь, по частям. Всё равно мой код пройдёт через такую кучу интерпретаторов-компиляторов, а возможности котроля не то, что ограничены, а вообще отсутствуют, так что как-то повлиять на конечный результат не представляется возможным?

почему ж...

1) какой бы не был размер объекта, передача его по ссылке займет одно и тоже время. Ведь указатель - это число.

2) какой бы не был размер объекта, компилятор в режиме релиза попытается оптимизировать ваш код (то, что вы делаете с объектом уже в методе). Скорее всего, все переменные метода, а также часть настроек, с которыми вы работаете, будет раскидана по регистрам процессора. Если вы работаете с этим объектом и не спешите передать его в GC, то какая то часть обязательно попадет в кэш процессора. Но большинство данных программы будет располагаться в оперативке.

3) явно рулить тем, что и где должно быть, просто из .Net вы не сможете

4) попытка экономить на даже не грошах приведет только к а) большому количеству убитого времени б) крайне сложной поддержкой кода в дальнейшем в) с высокой вероятностью такой код будет медленнее, чем "неоптимизированный" вариант.

Вы знаете, что оптимизатор SQL сервера в принципе очень даже интеллектуальный? Для управления процессом исполнения запросов MS SQL дает кучу всевозможных опций для оптимизации. Но попытка ими воспользоваться даже для разработчика средней руки приведет только к отрицательным последствиям. Уж слишком узкозаточенным получается запрос. Шаг в сторону - и даже правильно написанный код исполняется в сто и более раз медленнее. А уж переход с версии на версию приводит к мучениям.

Так что мой вам совет, бросьте заниматься дурью и если хотите что-то на .Net писать, придерживайтесь Best Practises. Код будет простым, понятным, легким в сопровождении и быстрым.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091336
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилот задачи зависит - на передачу данных в память GPU и обратно тоже нужно время.
в некоторых случаях AVX может дать лучший результат
если сурьёзно этим заниматься то надо брать видяху с количеством универсальных шрейдеров более 1500. хоть каждый из них слабее ЦПУ, но вся эта толпа должна разнести любой ЦПУ в клочья. будь он трижды Xeon.
но , разумеется , это уже не в рамках .Net
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091337
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно. Спасибо.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091338
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erИзопропилот задачи зависит - на передачу данных в память GPU и обратно тоже нужно время.
в некоторых случаях AVX может дать лучший результат
если сурьёзно этим заниматься то надо брать видяху с количеством универсальных шрейдеров более 1500. хоть каждый из них слабее ЦПУ, но вся эта толпа должна разнести любой ЦПУ в клочья. будь он трижды Xeon.
но , разумеется , это уже не в рамках .Net
Я ж говорил, что АМД лутше...
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091417
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУuser7320а возможности котроля не то, что ограничены, а вообще отсутствуют, так что как-то повлиять на конечный результат не представляется возможным?
Ну кое-какие возможности контроля для оптимизации всё-таки есть, например отключение проверки на границы массива. Тут писал: http://codearticles.ru/Home/ArticleView/548
Для этого нужно переключиться в небезопасный код. Но это всё зло, как уже сказали, дотнет не для этого сделан.


Говнокод в обработчиках крепчает!!! За такую "оптимизацию" голову отбивать нужно, а в твоем случае, Муслимка, задницу
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091431
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Всё равно мой код пройдёт через такую кучу интерпретаторов-компиляторов, а возможности котроля не то, что ограничены, а вообще отсутствуют, так что как-то повлиять на конечный результат не представляется возможным?
в твоём случае - да.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091438
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Ну кое-какие возможности контроля для оптимизации всё-таки есть, например отключение проверки на границы массива. Тут писал: http://codearticles.ru/Home/ArticleView/548
Для этого нужно переключиться в небезопасный код. Но это всё зло, как уже сказали, дотнет не для этого сделан.


Говнокод в обработчиках крепчает!!! За такую "оптимизацию" голову отбивать нужно, а в твоем случае, Муслимка, задницу
Тупая кухарка зрит не в корень, обработчики тут не причём.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091442
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erно , разумеется , это уже не в рамках .Net
заблуждение.

http://www.opentk.com
http://managedcuda.codeplex.com
http://www.codeproject.com/Articles/421869/H-264-CUDA-Encoder-DirectShow-Filter-in-Csharp

и т д
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091447
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилзаблуждение.
понятно , что можно и задницу обернуть в длл обёртку и дёргать её в шарпе.
Но!
в частности есть язык hlsl. у него свой синтаксис, своя задача. портировать его шарп невозможно без потерь, как в скорости, за которую бъёмся , там и потеря в полноценности.
Да, если написать на этом языке нужный метод с параметрами , и потом его дёргать, то ессесно работать будет . но его надо сначала написать.
иначе получится какой то франкеншейн, в духе SQL<->ORM, мегасрач по которому тут недавно прошёл
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091458
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erИзопропилзаблуждение.
понятно , что можно и задницу обернуть в длл обёртку и дёргать её в шарпе.
Но!
в частности есть язык hlsl. у него свой синтаксис, своя задача. портировать его шарп невозможно без потерь, как в скорости, за которую бъёмся , там и потеря в полноценности.
Да, если написать на этом языке нужный метод с параметрами , и потом его дёргать, то ессесно работать будет . но его надо сначала написать.
иначе получится какой то франкеншейн, в духе SQL<->ORM, мегасрач по которому тут недавно прошёл

Слишком сильное утверждение. Шейдеры есть wpf/sl. Компилируются отдельно с помощью DirectX SDK, а потом спокойно используются
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091882
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVabeg-in-erпропущено...

понятно , что можно и задницу обернуть в длл обёртку и дёргать её в шарпе.
Но!
в частности есть язык hlsl. у него свой синтаксис, своя задача. портировать его шарп невозможно без потерь, как в скорости, за которую бъёмся , там и потеря в полноценности.
Да, если написать на этом языке нужный метод с параметрами , и потом его дёргать, то ессесно работать будет . но его надо сначала написать.
иначе получится какой то франкеншейн, в духе SQL<->ORM, мегасрач по которому тут недавно прошёл

Слишком сильное утверждение. Шейдеры есть wpf/sl. Компилируются отдельно с помощью DirectX SDK, а потом спокойно используются
Эка штука получается. Теперь игровой программист может и в каком-нибудь НАСА поработать или каком другом институте ресёрчером, а может ресёрчер в игровую индустрию податься. Если, конечно, и тот и другой изучали HLSL для своих расчётов. Ну, игровец-то понятно, что изучал, а вот ресёрчер.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091898
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕсли передаешь объект по значению, то объект полностью копируется.Откуда этот бред высосан?

При передачи объекта по значению передается исходный указатель на объект, который можно перезаписать в вызываемой функции. А по ссылке — копия указателя. Объект один и тот же, никакого "копирования" объекта не происходит.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38091902
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyRoman MejtesЕсли передаешь объект по значению, то объект полностью копируется.Откуда этот бред высосан?Объект может оказаться структурой.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #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
А много ль затрат при передаче огромных объектов по ссылке?
    #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
А много ль затрат при передаче огромных объектов по ссылке?
    #38111782
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я удалил ненужный цикл и вообще заменил его функцией. Вы же на сказали, для каких задач этот массив нужен. Если вам постоянно нужны два миллиона строк с возрастающих числом на конце, то это одно. А если время от времени строка с числом на конце - то функция с параметром (в виде лямбды-делегата) лучший выход.
не можете решить конкретную задачу - максимально быстро получить 2.000.000 объектов индексированных строк.( а по сути рещить проблему сложения строк и конверсии числа в строку ) - так и напишите не можу решить элементарных вещей.

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

А можно показать как легко и непринужденно уменьшить время исполнения второго цикла хотя бы в 10 раз, безо всяких оптимальных решений, когда время выполнения второго цикла "будет по времени практически такое же, что и исполнение первого цыкла".
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38112156
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без unsafe.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38112281
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticbeg-in-er,

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

Показывайте. А я покажу что есть у меня.
В общем, у нас есть исходный вариант (0.07s) и плохой вариант (1s), плохой вариант медленнее исходного в ~15 раз. Нам нужно оптимизировать плохой вариант.
Первым делом избавляемся от боксинга q, время выполнения снижается до 0.9s, т.е. на 10%.
Затем предположим, что мы написали лучший метод, чем string.Concat и избавились от конкатенации строк с нулевыми потерями производительности, получаем время выполнения 0.59s, но это даже не вдвое меньше чем исходный плохой вариант.
Дальше остается оптимизировать int.ToString(), который использует нативную функцию для конвертации числа в строку, а нам нужно сделать быстрее.
Может я где-то очевидную ошибку допускаю? Всё-таки оптимизацией приходится редко заниматься.
...
Рейтинг: 0 / 0
А много ль затрат при передаче огромных объектов по ссылке?
    #38113307
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmatic,
ну я тоже не каждый день провожу оптимизацию в 1.000 раз 13782217

в начале я думал просто в байты перевести и потом шлёпать в хвост байт-строки какой-то разделитель и 4 байта числа.
а потом , когда попробывал что то сделать , пришло другое решение

Код: c#
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.
  class Z_class
        {
            public string[] SSS;
            public int[] qq;
            bool[] b2;  //признак обработанной строки
            public string this[int q]
            {
                get
                {
                    if (b2 == null)
                        b2 = new bool[SSS.Length];
                    if (!b2[q])
                    {
                        b2[q] = true;
                        SSS[q] = SSS[q] + qq[q];
                    }
                    return SSS[q];
                }
            }
          
        }
        void K1()
        {
            Z_class = new  Z_class();
            string[] SSS = new string[2000000];
            int[] qq = new int[SSS.Length];

            for (int q = 0; q < 2000000; q++)
            {
                SSS[q] = "sssssss";
                qq[q] = q;
            }
            xxx.SSS= SSS;
            xxx.qq = qq;
        }



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

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

Ну это вообще лол. Пройдите по этому массиву полностью один раз и по времени на то и выйдет. Подразумевалось же, что массив нужен весь и сразу.

>в этом наверно и есть оптимальность решения
Оптимальность решения в том, что вы не считаете всё и сразу, а выдаёте результат малыми порциями.

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

авторПодразумевалось же, что массив нужен весь и сразу.
неа, я написал несколько не так:
что бы в памяти болталось 2.000.000 объектов, содержащих строку
Z_class[0] же содержит строку . ну это казуистика.

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


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