Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стоит ли экономить память?))) 
V
    Опции темы
ДобренькийПапаша
Дата 11.7.2011, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Стоит ли экономить память, используя, скажем, short вместо int в циклах там где это возможно и не происходит продвижения типов в выражениях в теле цикла (что, наверное нивелирует всю выгоду от использования short)?

Я помню как в одном из своих первых проектов я для интереса прошёлся по достаточно большой программе и заменил все int где можно было на byte и short. В debug'е производительность сильно возросла (это было видно даже на глаз - студия даже работала быстрее smile ).


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
jonie
Дата 11.7.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(ДобренькийПапаша @  11.7.2011,  16:18 Найти цитируемый пост)
Я помню как в одном из своих первых проектов я для интереса прошёлся по достаточно большой программе и заменил все int где можно было на byte и short. В debug'е производительность сильно возросла (это было видно даже на глаз - студия даже работала быстрее smile ).

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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ДобренькийПапаша
Дата 11.7.2011, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата(jonie @  11.7.2011,  16:48 Найти цитируемый пост)
неповерю что производительность выросла, если меняли в циклах. на x86 не ну могло быть такого. 

Менял не только в циклах. На платформе x64, но таргетом была x86, да.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
jonie
Дата 11.7.2011, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



ДобренькийПапаша, ну я все-равно не поверю. Потому как выравнивание один фиг наверняка по 4 байтной границе было (хотя насчет массивов не уверен)...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ДобренькийПапаша
Дата 11.7.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата(jonie @  11.7.2011,  19:58 Найти цитируемый пост)
ДобренькийПапаша, ну я все-равно не поверю. Потому как выравнивание один фиг наверняка по 4 байтной границе было (хотя насчет массивов не уверен)... 

Ну так в результате, каково ваше мнение-то? Я так понял, что ваше мнение заключается в том, что замена int на менее прожорливые примитивы не прибавит производительности.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
jonie
Дата 11.7.2011, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



не прибавит. Пока есть память не прибавит вообще ничего, напротив, убавит.
Возьмите IntelVTune да сами погоняйте... правда .net это проблемно, но на unmanaged типах можно посмотреть сколько будет промахиваться процессор


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Fitc
Дата 12.7.2011, 08:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: 3
Всего: 4



Цитата(ДобренькийПапаша @ 11.7.2011,  15:18)
Стоит ли экономить память, используя, скажем, short вместо int в циклах там где это возможно и не происходит продвижения типов в выражениях в теле цикла (что, наверное нивелирует всю выгоду от использования short)?

Я помню как в одном из своих первых проектов я для интереса прошёлся по достаточно большой программе и заменил все int где можно было на byte и short. В debug'е производительность сильно возросла (это было видно даже на глаз - студия даже работала быстрее smile ).

Повышения производительности точно не будет потому что операции с числами размером 32, 64 байта обрабатываются процессором очень быстро. Так как на вход элементов ЦП типа АЛУ число записывается полностью, его не надо дробить и т.д.
PM MAIL   Вверх
ДобренькийПапаша
Дата 12.7.2011, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



То есть использовать short в обычных desktop-приложениях практически не имеет смысла (ну, с учётом того, что памяти у современных компьютеров хоть жопой жуй)?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
klein
Дата 12.7.2011, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 30.5.2006
Где: Київ

Репутация: нет
Всего: нет



На мой взгляд имеет смысл только тогда когда массив данных >= размеру L1, L2 кеша процессора, либо если размер переменной больше разрядности регистра (bigint, decimal на 32х-разрядниках). А так фифект мизерный.
PM MAIL   Вверх
Fitc
Дата 12.7.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: 3
Всего: 4



Цитата(ДобренькийПапаша @ 12.7.2011,  09:02)
То есть использовать short в обычных desktop-приложениях практически не имеет смысла (ну, с учётом того, что памяти у современных компьютеров хоть жопой жуй)?

Мне кажется если итератор используется в for(int i=...), то сборщик мусора уничтожает его как только ты выходишь из цикла (т.к. эта переменная больше не используется), так что память не будет долго "заполнена" переменной типа int

Это сообщение отредактировал(а) Fitc - 12.7.2011, 12:26
PM MAIL   Вверх
jonie
Дата 12.7.2011, 15:49 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(Fitc @  12.7.2011,  13:24 Найти цитируемый пост)

Мне кажется если итератор используется в for(int i=...), то сборщик мусора уничтожает его как только ты выходишь из цикла (т.к. эта переменная больше не используется), так что память не будет долго "заполнена" переменной типа int

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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
N1ko
Дата 14.7.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 30.12.2007
Где: Киев

Репутация: нет
Всего: нет



Цитата(jonie @  12.7.2011,  15:49 Найти цитируемый пост)
а мне кажется что в некоторых случаях цикла вообще не будет, а в других будут использованы регистры процессора для счетчика и ничего в куче выделяться вообще не будет.

Насколько я знаю CLR никогда с регистрами не общалась. В этом то его и фишка. И инты он все прописывает в стеке, не в куче(если конечно они не часть какого нибудь класса). Возможно будет происходить то, о чём вы писали, когда будет запускаться уже непосредственно преобразованый код из IL в Native например посредством NGen. ТО о чём вы сказали, скорее относится например к плюсам, которые не под дотнетом работают.  Если я ошибаюсь, поправьте.

Это сообщение отредактировал(а) N1ko - 14.7.2011, 17:05
PM MAIL ICQ   Вверх
AlexNagits
Дата 14.7.2011, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



Цитата

это было видно даже на глаз - студия даже работала быстрее smile ). 

Я бы на вашем месте доверял не глазам, а профилировщику
PM MAIL   Вверх
jonie
Дата 15.7.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(N1ko @  14.7.2011,  18:03 Найти цитируемый пост)
асколько я знаю CLR никогда с регистрами не общалась. В этом то его и фишка. И инты он все прописывает в стеке, не в куче(если конечно они не часть какого нибудь класса). Возможно будет происходить то, о чём вы писали, когда будет запускаться уже непосредственно преобразованый код из IL в Native например посредством NGen. ТО о чём вы сказали, скорее относится например к плюсам, которые не под дотнетом работают.  Если я ошибаюсь, поправьте.

мне сложно комментировать какой-то эпический бред. Лучше прочитайте как работает IBM PC совместимые копьютеры, что такое ngen  и как работает CLR. Можете еще исходники Mono поковырять..


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ДобренькийПапаша
Дата 12.8.2011, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата(jonie @  15.7.2011,  11:37 Найти цитируемый пост)
мне сложно комментировать какой-то эпический бред. Лучше прочитайте как работает IBM PC совместимые копьютеры, что такое ngen  и как работает CLR. Можете еще исходники Mono поковырять.. 


jonie, меня очень заинтересовала эта тема и я решил почитать Рихтера. Прочитал пару глав и наткнулся на то, да, IL не имеет команд для работы с регистрами. (это совершенно точно). Но что это конкретно означает? Может ли CLR попросить ОС записать что-то в регистры? Или ей и просить ничего не надо (в том смысле, что при помещении команд в стек ОС сама решит какие ячейки памяти ей использовать)?

Большое спасибо всем кто примет участие в теме)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.