А тут не нужны источнки, скачайте моно. И скомпилируйте 2 цикла с foreach и for, и посмотрите IL код. Тело цикла будет совпадать в обоих случаях (также и для Microsoft.NET). Конечно в блоге разработчиков где-то есть описание но искать лень.
Вообще mayorovp все уже отметил, но вот обычно в реализациях компилятора, когда он встречает forach и мы имеем массив, то там идет оптимизация и на выходе мы будем иметь for (var i = 0; i < array.Length; i++). Такая оптимизация есть и в Mono и в Microsoft .NET. Поэтому, в большинстве случаев, вызова GetEnumerator у массива не будет.
Ну вроде как это должно исправить ситуацию, просто мне было не нужно:
<ItemsControl
VirtualizingStackPanel.IsVirtualizing=«True»
ScrollViewer.CanContentScroll=«True»>
<ItemsControl.ItemsPanel>
<VirtualizingStackPanel />
</ItemsControl.ItemsPanel>
</ItemsControl>
Ну я эту проблему решал по-другому. Использовал ScrollView и ItemsControl. К данным написал конвертер, который сортирует список в нужном порядке и добавил attached dp DockScrollToBottom, при установлении которого я вешался на изменение прокрутки у ScrollView и прокручивал на разницу добавленного элемента. В данном случае ScrollView будет работать c физическим скроллингом, в отличие от логического в ListBox, тогда у вас пропадёт баг прокрутки на неполноценный элемент, а также никаких косяков не будет с горизонтальной прогруткой.
Но вот меня интересует вопрос, решали ли вы проблемы со смайлами ;-), я говорю не про текстовые смайлы из unicode, а полноценные графические?
Есть ли годный механизм отрисовки spatial raster в своём слое, чтобы отрисовка не занимала секунды?
Хочется либо создать свой IRasterDataset который бы знал, как обратиться к моим растрам, либо напрямую писать в буфер, который бы перепроецировался автоматически перед выводом на экран. Ничего такого не смог найти, а работа через IRasterLayer, как в ArcBruTile очень медленная =(.
Всё очень просто. В основном у ОПСОСов есть внутри таблица с фиксированными айдишниками и стоимостью звонка на такой номер. Теперь придёться переписывать рейтинг, чтобы он обращался к огромной таблице, у которой будут миллионы записей, причём эта таблица должна синхронизироваться между ОПСОСами в течении 3х дней. Звучит просто, но геморрой ещё тот будет — согласование между операторами, разработка, тестирование, внедрение. Если центральные регионы это затронет в меньшей степени, то отдалённые… Так что предварительные расчёты вполне верны.
Спасибо, за статью.
Только не совсем понял про Target и L0 кеш. В виртуальной машине специально прописана оптимизация для CallSite, что Target всегда должен лежать в регистре? Ведь CallSite это по сути класс и место ему в куче, а адресация как у всех идёт через смещение.
Они и не смогут сделать его закрытым — нарушат лицензию. А проблемы перехода на новую версию андроида — это проблемы драйверов, производитель то не спешит ими делиться. И вы хоть трижды перепешите андроид, без драйверов это будет просто дорогой кирпич.
<ItemsControl
VirtualizingStackPanel.IsVirtualizing=«True»
ScrollViewer.CanContentScroll=«True»>
<ItemsControl.ItemsPanel>
<VirtualizingStackPanel />
</ItemsControl.ItemsPanel>
</ItemsControl>
Но вот меня интересует вопрос, решали ли вы проблемы со смайлами ;-), я говорю не про текстовые смайлы из unicode, а полноценные графические?
Хочется либо создать свой IRasterDataset который бы знал, как обратиться к моим растрам, либо напрямую писать в буфер, который бы перепроецировался автоматически перед выводом на экран. Ничего такого не смог найти, а работа через IRasterLayer, как в ArcBruTile очень медленная =(.
Только не совсем понял про Target и L0 кеш. В виртуальной машине специально прописана оптимизация для CallSite, что Target всегда должен лежать в регистре? Ведь CallSite это по сути класс и место ему в куче, а адресация как у всех идёт через смещение.