![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Стоит ли экономить память, используя, скажем, short вместо int в циклах там где это возможно и не происходит продвижения типов в выражениях в теле цикла (что, наверное нивелирует всю выгоду от использования short)?
Я помню как в одном из своих первых проектов я для интереса прошёлся по достаточно большой программе и заменил все int где можно было на byte и short. В debug'е производительность сильно возросла (это было видно даже на глаз - студия даже работала быстрее -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
неповерю что производительность выросла, если меняли в циклах. на x86 не ну могло быть такого. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Менял не только в циклах. На платформе x64, но таргетом была x86, да. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
ДобренькийПапаша, ну я все-равно не поверю. Потому как выравнивание один фиг наверняка по 4 байтной границе было (хотя насчет массивов не уверен)...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Ну так в результате, каково ваше мнение-то? Я так понял, что ваше мнение заключается в том, что замена int на менее прожорливые примитивы не прибавит производительности. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
не прибавит. Пока есть память не прибавит вообще ничего, напротив, убавит.
Возьмите IntelVTune да сами погоняйте... правда .net это проблемно, но на unmanaged типах можно посмотреть сколько будет промахиваться процессор -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Fitc |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: 3 Всего: 4 |
Повышения производительности точно не будет потому что операции с числами размером 32, 64 байта обрабатываются процессором очень быстро. Так как на вход элементов ЦП типа АЛУ число записывается полностью, его не надо дробить и т.д. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
То есть использовать short в обычных desktop-приложениях практически не имеет смысла (ну, с учётом того, что памяти у современных компьютеров хоть жопой жуй)?
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| klein |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
На мой взгляд имеет смысл только тогда когда массив данных >= размеру L1, L2 кеша процессора, либо если размер переменной больше разрядности регистра (bigint, decimal на 32х-разрядниках). А так фифект мизерный.
|
|||
|
||||
| Fitc |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: 3 Всего: 4 |
Мне кажется если итератор используется в for(int i=...), то сборщик мусора уничтожает его как только ты выходишь из цикла (т.к. эта переменная больше не используется), так что память не будет долго "заполнена" переменной типа int Это сообщение отредактировал(а) Fitc - 12.7.2011, 12:26 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
а мне кажется что в некоторых случаях цикла вообще не будет, а в других будут использованы регистры процессора для счетчика и ничего в куче выделяться вообще не будет. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
Насколько я знаю CLR никогда с регистрами не общалась. В этом то его и фишка. И инты он все прописывает в стеке, не в куче(если конечно они не часть какого нибудь класса). Возможно будет происходить то, о чём вы писали, когда будет запускаться уже непосредственно преобразованый код из IL в Native например посредством NGen. ТО о чём вы сказали, скорее относится например к плюсам, которые не под дотнетом работают. Если я ошибаюсь, поправьте. Это сообщение отредактировал(а) N1ko - 14.7.2011, 17:05 |
|||
|
||||
| AlexNagits |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
Я бы на вашем месте доверял не глазам, а профилировщику |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
мне сложно комментировать какой-то эпический бред. Лучше прочитайте как работает IBM PC совместимые копьютеры, что такое ngen и как работает CLR. Можете еще исходники Mono поковырять.. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
jonie, меня очень заинтересовала эта тема и я решил почитать Рихтера. Прочитал пару глав и наткнулся на то, да, IL не имеет команд для работы с регистрами. (это совершенно точно). Но что это конкретно означает? Может ли CLR попросить ОС записать что-то в регистры? Или ей и просить ничего не надо (в том смысле, что при помещении команд в стек ОС сама решит какие ячейки памяти ей использовать)? Большое спасибо всем кто примет участие в теме))) -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |