Редактирование 2:
у меня была другая мысль потенциала здесь:
Вы упомянули работу x64. Я протестировал эту ту же проблему о x86 и видел ту же производительность при использовании автосвойств по сравнению с полями. Однако при оглядывании на Подключении и списке рассылки / сообщений форума существует много ссылок онлайн на то, что JIT x64 CLR является другой кодовой базой и имеет совсем другие рабочие характеристики к x86 JIT. Мое предположение, это - одно место, где x64 все еще отстает.
кроме того, к вашему сведению, вещь структуры/метода/и т.д., починенная в .net 3.5sp1, была на x86 стороне и была тем, что вызовы метода, которые взяли структуры в качестве параметра, никогда не будут встраиваться на x86 до .net3.5sp1. Это в значительной степени не важно этому обсуждению Вашей системы.
Редактирование 3:
Другая вещь: относительно того, почему XNA использует поля. Я на самом деле был на Игровом Фестивале, где они объявили о XNA. Rico Mariani сделал доклад, где он поднял многие из тех же точек, которые находятся на его блоге. Кажется, что у людей XNA были подобные идеи, когда они разработали некоторые базовые объекты. См.:
http://blogs.msdn.com/ricom/archive/2006/09/07/745085.aspx
Особенно, проверьте точку № 2.
Что касается того, почему автоматические свойства лучше, чем общедоступные поля:
Они позволяют Вам изменять реализацию в v2 Вашего класса и добавлять логику в свойство стандартные программы get/set по мере необходимости, не изменяя Ваш интерфейс на Ваших конечных пользователей. Это может иметь сильное воздействие на Вашу способность поддерживать Вашу библиотеку и код со временем.
----Из исходного сообщения - но обнаруженный это не было--------
проблемы, Были Вы выполняющий сборку конечных версий внешний из VS? Это может быть одним объяснением того, почему вещи не оптимизируются. Часто, если Вы работаете в VS, даже оптимизированной сборке конечных версий, хост-процесс VS отключает много функций JIT. Это может заставить сравнительные тесты производительности изменяться.
Вы захотите поиграть с менеджерами компоновки , чтобы контролировать расположение и размер элементов управления в вашей JPanel
. Менеджеры компоновки несут ответственность за размещение элементов управления, определение того, где они находятся, насколько они велики, сколько места между ними, что происходит, когда вы изменяете размер окна и т. Д.
Существует множество различных менеджеров компоновки, каждый из которых позволяет вам разметить элементы управления по-разному. Диспетчер компоновки по умолчанию - FlowLayout
, который, как вы видели, просто размещает компоненты рядом друг с другом слева направо. Это самое простое. Некоторые другие распространенные менеджеры компоновки:
GridLayout
- упорядочивает компоненты в прямоугольную сетку со строками и столбцами одинакового размера. BorderLayout
- имеет один главный компонент в центре и до четырех окружающих компонентов сверху, снизу и слева, и справа. GridBagLayout
- самая большая из всех встроенных менеджеров компоновки, он самый гибкий, но и самый сложный в использовании. Вы можете, например, использовать BoxLayout для размещения этикеток.
BoxLayout
либо укладывает свои компоненты друг на друга, либо размещает их в ряд - на ваш выбор. Вы можете думать об этом как о версииFlowLayout
, но с большей функциональностью. Вот изображение приложения, которое демонстрирует использованиеBoxLayout
для отображения центрированного столбца компонентов:
Пример кода с использованием BoxLayout
:
JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.Y_AXIS));
pMeasure.add(economy);
pMeasure.add(regularity);
...
Быстрый способ - использовать html в JLabel.
Например, добавьте тег
.
В противном случае реализуйте BoxLayout.