|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер?Мне кажется, что ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 12:32 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Изопропилuser7320Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать? сферический конь в вакууме. Где лучше, для чего лучше? Лучше с точки зрения производительности, потребления памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 16:40 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Лучше с точки зрения производительности, потребления памяти. это называется преждевременная оптимизация. Узкое место вызовы и передача параметров? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:37 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320SeVaПрежде, чем озадачиваться оптимизацией на уровне регистров, лучше разобраться, что происходит во время такого косяка как list.add. Одно это убьет всю производительность на корню. Первый принцип разработки эффективного кода на net - минимизация выделения памяти. Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер? И меня всё равно интересует вопрос в моём предыдущем посте - есть ли разница при передаче по ссылке объектов разного размера? Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать? Эмм... учи net: yeild, отложенное выполнение. Пройдись рефлектором по своему list.add, очень много интересного увидишь, сразу поймешь, что про регистры можно забыть ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:45 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Изопропилuser7320Лучше с точки зрения производительности, потребления памяти. это называется преждевременная оптимизация. Узкое место вызовы и передача параметров? Да кто его знает. Лучше у умных людей заранее спросить, стоит делать то-то или не стоит. SeVauser7320пропущено... Эмм... ну а что со списком и конкретно с добавлением в него элементов можно сделать, кроме как во время создания указать фиксированный размер? И меня всё равно интересует вопрос в моём предыдущем посте - есть ли разница при передаче по ссылке объектов разного размера? Если ли разница, передавать в функцию один большой объект по ссылке и считывать нужные свойства, или лучше эти свойства по отдельности в параметры загнать? Эмм... учи net: yeild, отложенное выполнение. Пройдись рефлектором по своему list.add, очень много интересного увидишь, сразу поймешь, что про регистры можно забыть Да я уже забыл про регистры. Вы просто скажите, есть разница передавать по ссылке большие или маленькие объекты в функцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 11:17 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320есть разница передавать по ссылке большие или маленькие объекты в функцию нет. потому что передается сама ссылка, а не объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 11:32 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 16:53 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320, Это знаете как в том анекдоте про чукчу Чукча пришел на экскурсию на фабрику где конфеты мастерят, ну его водят по цехам, всю технологию разжевывают на выходе: -Понял? -Ага, только не понятно, как начинка внутри конфеты оказывается.. Есть еще старый студенческий коломбур жутко матерный ( на бис) Зы сделайте консоль и посмотрите как компилятор оптимизирует ваш код, и что будет лежать в стеке, если все это не понятно ( стеки, указатель, куча .....) зачем все это спрашивать, если ответ все равно уже дали выше а до вас не дошло.. Я это сказал без обид, Вам о этом рано рассуждать, вам базу учить надо.. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:12 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля? кроче, с таким подходом к вопросу производительности ваш код будет всегда хуже , нежеле копилятор в лоб сделает. в вопросах оптимизации сначала идёт задача, а уже потом попытки её ускорения. да , и ещё. плохо реализованный , но великолепный алгоритм, будет работать быстрее отлично реализованного , но слабенького алгоритма. на затравку Код: c# 1. 2. 3.
во сколько раз второй цыкл будет работать дольше. так , в уме прикинньте. а потом проверьте на компе ))) вот так просто может развалится вся оптимизация. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:23 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Так. А теперь: что лучше с точки зрения производительности и потребления памяти: считать с большого объекта поля и передать их в функцию по ссылкам как параметры, или передать этот объект по ссылке как параметр, а в функции уже считывать его поля? С точки зрения производительности и потребления памяти при прочих идеальных условиях и некриворуковсти программиста все идентично. Но исходя из ваших вопросов я советую использовать одну ссылку на большой объект и доставать всё, что нужно из него. В первом варианте есть большая вероятность, что вы наделаете ошибок Но если брать в общем, то подход стандартный - передавать в функцию только нужные ей параметры, чтобы избежать повреждения данных. Помимо прочего это позволит методу быть статичным ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:27 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
beg-in-erво сколько раз второй цыкл будет работать дольше. так , в уме прикинньте. а потом проверьте на компе ))) вот так просто может развалится вся оптимизация. Я только знаю, что конкатенация работает очень медленно. Поэтому везде в руководствах пишут, что надо умещать всю строку в одну, когда это можно. И если компилятор может заранее склеить строки, которые конкатенацией образованы из-за того, что в экран одна большая строка не влезла, когда программист код писал, то в других случаях он может и не догадаться. Я вообще сейчас уже начал не для вопросов особого быстродействия спрашивать, а просто для интереса. Получается, что разница реально в основном только в том, что в случае кучи разных полей, переданных в качестве параметров, будет просто больше переменных занято на хранение ссылок (адресов), чем когда один объект? Это всё? авторЕсть еще старый студенческий коломбур жутко матерный ( на бис) Зы сделайте консоль и посмотрите как компилятор оптимизирует ваш код У меня из студенческого вспоминается только эпитаксия и барьер Шоттки, и то я их забыл уже давно. ))) Всем спасибо, что повозились со мной. Я трудный. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:03 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Я только знаю, что конкатенация работает очень медленно. ну если там проблема только в сложении строк, попытайтесь оптимизировать алгоритм. так, что бы в памяти болталось 2.000.000 объектов, содержащих строку. что бы время было как можно ближе к первому цыклу. сделайте, и тогда поймёте , что количество передаваемых параметров , если и влияет на скорость, то настолько незначительно , что этим можно пренебречь. вам же просто для интереса. ну вот и дерзайте. надеюсь после решения этой задачки , странных вопросов будет меньше. зы. проблема там ессесна не только в конкатенации ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:28 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
beg-in-er, Ну, насколько я знаю, рекомендуют использовать СтрингБилдер и Аппенд. Конкатенация создаюёт каждый раз новую строку - выделение памяти и всё такое. Испытывать ваш пример не стал - неохота. Извините. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 21:04 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Ну, я ещё могу предположить, что поскольку вы перезаписываете SSS, и при этом значениями, бОЛьшими по длине, чем были, то надо будет сделать реорганизацию оперативной памяти (дефрагментация и прочее) - т. е. сборщик мусора начнёт тормозить программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 21:09 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Ну, я ещё могу предположить, что поскольку вы перезаписываете SSS, и при этом значениями, бОЛьшими по длине, чем были, то надо будет сделать реорганизацию оперативной памяти (дефрагментация и прочее) - т. е. сборщик мусора начнёт тормозить программу. опять мимо кассы. размер нового значения не имеет значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 22:18 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Надо в оптимизаторе отключить проверку на выход за границы массива? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 22:24 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Надо в оптимизаторе отключить проверку на выход за границы массива? тебе - не надо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 22:27 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Испытывать ваш пример не стал - неохота. Извините. )) а зачем спичь о скорости , если с простейшей задачей оптимизации не можешь справиться. скорость работы второго цыкла легко и непринуждённо увеличивается как минимум втрое. ( проверка на размер массива не поможет). а можно ускорить и ещё в большее число раз. до 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 22:32 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320чем были, то надо будет сделать реорганизацию оперативной памяти короче, оптимальное решение задачи - оптимизации выполнения 2го цыкла будет по времени практически такое же, что и исполнение первого цыкла. затраты на решение = максимум 2 минуты. когда сделаете, поймёте , что не в регистрах щастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 23:16 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
beg-in-eruser7320чем были, то надо будет сделать реорганизацию оперативной памяти короче, оптимальное решение задачи - оптимизации выполнения 2го цыкла будет по времени практически такое же, что и исполнение первого цыкла. затраты на решение = максимум 2 минуты. когда сделаете, поймёте , что не в регистрах щастье. Речь не идёт об unsafe-коде? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 04:48 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user7320Речь не идёт об unsafe-коде?в данном случае , можно и без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 07:02 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
1. Я просто удаляю первый цикл как бесполезный - всё равно второй делает то же самое и больше. 2. Я заменяю всю эту фигню одной функцией, которая принимает параметр - число, и возвращает вот эту строку, которую вы два миллиона раз пишете, сконкатенованную с числом-параметром. 3. Это вопрос с заковыкой. Правильный ответ - не думать об этом вопросе. Таким образом можно реально ускорить производительность и разработку другого, более умного кода, просто перестав думать о более глупом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 08:21 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
beg-in-erчто не в регистрах щастье а в их количестве :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 09:20 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
user73203. Правильный ответ - не думать об этом вопросе. так и запишем - студенту низачьод. не справился с элементарной задачей оптимизации. причём задачей не абстрактной , а в полне конкретной. в жизни встречающейся. Изопропила в их количестве :) взвестье полкило ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 10:05 |
|
А много ль затрат при передаче огромных объектов по ссылке?
|
|||
---|---|---|---|
#18+
Я удалил ненужный цикл и вообще заменил его функцией. Вы же на сказали, для каких задач этот массив нужен. Если вам постоянно нужны два миллиона строк с возрастающих числом на конце, то это одно. А если время от времени строка с числом на конце - то функция с параметром (в виде лямбды-делегата) лучший выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 10:35 |
|
|
start [/forum/topic.php?fid=20&msg=38111447&tid=1405345]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 176ms |
0 / 0 |