1 | |
.NET 4.x Упаковка и память. Разница скорости работы классов и структур21.01.2014, 08:14. Показов 4090. Ответов 15
Метки нет (Все метки)
Если Int32 это структура и создается в стеке (никаких упаковок-распаковок), то почему тут на форуме проводя испытания на скорость выполнения, созданные классы с полями выполнялись быстрее таких-же структур?
0
|
21.01.2014, 08:14 | |
Ответы с готовыми решениями:
15
Реализовать в виде библиотеки классов класс для работы с массивом структур Упаковка структуры не используя лишнюю память Разница в скорости выполнения, итераторы Разница в скорости выполнение программы C++ или C# |
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
21.01.2014, 09:25 | 2 |
При классах тоже никаких упаковок-распаковок. О чем речь?
0
|
21.01.2014, 10:02 [ТС] | 3 |
Если структура создаётся в стеке и она (по книжкам) быстрее, то почему создание класса и его выполнение в оперативной (по книжкам) памяти, быстрее? По результатам исследований с форума.
Добавлено через 13 минут С упаковкой погорячился)) Глава книги так называется.
0
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
21.01.2014, 10:23 | 4 |
Скорость работы структуры на стеке зависит от того как она используется в процессе работы.
В разных сценариях выполнения может быть быстрее как структура, так и класс.
0
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
21.01.2014, 11:05 | 6 |
Нет. Это разные сценарии.
Для структур неприятно множественное протаскивание толстых структур через стек как аргументов при вызове функций. Для классов множественное создание и уничтожение мелких объектов в пределах одной функции.
0
|
16 / 16 / 4
Регистрация: 08.05.2013
Сообщений: 37
|
|
21.01.2014, 11:22 | 7 |
пруф? структуры имею некоторые особенности, которые могут поставить в тупик программиста, но такой категоричный совет - забыть про них - совсем неправильный
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
21.01.2014, 11:31 | 8 |
Сообщение было отмечено как решение
Решение
Choosing Between Class and Struct:
Разрешите подписаться.
3
|
21.01.2014, 11:59 [ТС] | 9 |
Если приложение позволяет - то использование памяти и скорости - оправдание?
Добавлено через 2 минуты Может чего не так понимаю, но использование сборщика при "толстых" структурах - оправдание?
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
21.01.2014, 12:01 | 10 |
Простите, не совсем понял вопрос.
Эффективное использование памяти и скорости — конечно оправдание. Вы об этом? Добавлено через 1 минуту Сборщик? Со структурами? Это только при наличии запаковки такое может случиться.
0
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
21.01.2014, 12:04 | 12 |
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
21.01.2014, 12:07 | 14 |
Depends.
О каком конкретно "быстрее" идет речь? Выделение памяти под экземпляр? Запись в память? Чтение из памяти? В этом случае производительность стека и кучи сопоставима. Потому при выборе структура/класс стоит вопрос о частоте создания и о частоте передачи между контекстами — в этих случаях выбор может повлиять на производительность.
0
|
21.01.2014, 12:12 [ТС] | 15 |
pycture,
Может мне надо было с этого и начать чем сразу лезть в дебри. Есть классы, полученные от COM сервера. Их удобно запихнуть в некий "массив" и его таскать по коду. Предположим это будет координата точки (которая может быть представлена в виде отдельной структуры, реализацию которой в свою очередь, предоставляет COM сервер "Util.MathPoint"), 3 вектора, плоскость. Добавлено через 2 минуты Создаётся раз в коде, обращение очень частое.
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
21.01.2014, 12:19 | 16 |
Если постоянно "бросаете" из метода в метод или присваиваете локальным переменным (напр. var x = this.blabla), то лучше используйте класс — сэкономите на очень частом копировании.
1
|
21.01.2014, 12:19 | |
21.01.2014, 12:19 | |
Помогаю со студенческими работами здесь
16
Разница с скорости процессоров у Mac, производительность Откуда такая разница в скорости выполнения кода? Большая разница между POST и GET запросами в скорости? Есть ли разница в скорости между Sata 3 и miniSata Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |