Я рассматривал и Pygame и Pyglet для маленького 2D стрелка, и после рассмотрения исходного кода, и некоторые учебные руководства пошли с Pyglet. Я был очень доволен результатами.
Pyglet сразу работал и был приятен работать с, и концептуально очень чистый. Это, конечно, сделало, чтобы Pythonic чувствовал мне: Вы могли получить простой и читаемый пример, идущий очень быстро, и он использует декораторов успешно для обработки событий. Это также не вызвало конкретную структуру программы, которая облегчила для меня смешиваться в моделировании физики Pymunk ( http://code.google.com/p/pymunk/ ).
, В то время как это основано на OpenGL и можно использовать те функции для специальных эффектов, я смог сделать очень хорошо без любого ведома их.
Это также работает хорошо с py2exe и py2app, который важен, потому что большому количеству людей не установили интерпретатор Python.
На оборотной стороне, существует меньше информации об этом в сети, потому что это является более новым, а также меньше демонстрационных игр для взгляда на.
кроме того, это изменилось вполне немного от предыдущих версий, таким образом, некоторые учебные руководства, которые являются, там теперь устарели (существует "модернизированный цикл событий" и класс Sprite как основные дополнения.)
я рекомендовал бы загрузить примеры (существует хороший клон Астероидов, названный включенным Astraea), и видящий, нравится ли Вам стиль.
Я обычно смотрел на это не с точки зрения максимальной скорости , а скорее с точки зрения использования памяти . Все реализации были достаточно быстрыми для сценариев использования, в которых я их использовал (типичная корпоративная интеграция).
Однако, когда я потерпел неудачу, и иногда весьма впечатляюще, не принимается во внимание общий размер XML, с которым я работаю. Если подумать об этом заранее, то можно избавить себя от некоторых неприятностей.
XML имеет тенденцию раздуваться при загрузке в память, по крайней мере, с помощью программы чтения DOM, такой как XmlDocument
или XPathDocument
. Что-то вроде 10: 1? Точное количество трудно определить количественно, но, если на диске 1 МБ, это будет, например, 10 МБ памяти или больше.
Процесс, использующий любое средство чтения, которое загружает весь документ в память целиком ( XmlDocument
/ XPathDocument
), может пострадать от фрагментации кучи больших объектов, что в конечном итоге может привести к OutOfMemoryException
s (даже с доступной памятью), приводящие к недоступности службы / процесса.
Поскольку объекты, размер которых превышает 85 КБ, попадают в кучу больших объектов, и у вас есть взрывной рост размера 10: 1 с помощью средства чтения DOM, вы можете видеть, что это не займет много времени, прежде чем ваши XML-документы будут выделяется из кучи больших объектов.
XmlDocument
очень прост в использовании. Его единственный реальный недостаток заключается в том, что он загружает весь XML-документ в память для обработки. Его соблазнительно просто использовать.
XmlDocument - это представление всего XML-документа в памяти. Поэтому, если ваш документ большой, он будет потреблять намного больше памяти, чем если бы вы читали его с помощью XmlReader.
Это предполагает, что при использовании XmlReader вы читаете и обрабатываете элементы один за другим, а затем отбрасываете его. Если вы используете XmlReader и создаете другую промежуточную структуру в памяти, то у вас та же проблема, и вы побеждаете ее цель.
Google для " SAX vs. DOM ", чтобы узнать больше о различиях между двумя моделями обработки XML.
Существует порог размера, при котором XmlDocument становится медленнее и в конечном итоге становится непригодным для использования. Но фактическое значение порога будет зависеть от вашего приложения и содержимого XML, поэтому жестких правил не существует.
Если ваш XML-файл может содержать большие списки (скажем, десятки тысяч элементов), вам определенно следует использовать XmlReader.