<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Niklas Rother - XNA, Computer &#38; mehr &#187; Performance</title>
	<atom:link href="http://niklas-rother.de/tags/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://niklas-rother.de</link>
	<description>Ein Blog über XNA, C#, Software, und anderes...</description>
	<lastBuildDate>Thu, 09 Feb 2012 12:53:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>XNA 4.0 in Deutsch &amp; Performance Tools</title>
		<link>http://niklas-rother.de/artikel/xna-4-0-in-deutsch-performance-tools/</link>
		<comments>http://niklas-rother.de/artikel/xna-4-0-in-deutsch-performance-tools/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 08:42:05 +0000</pubDate>
		<dc:creator>Niklas</dc:creator>
				<category><![CDATA[Interressantes]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://niklas-rother.de/?p=1046</guid>
		<description><![CDATA[Gleich zwei super Neuigkeiten heute: XNA gibt es jetzt auch auf Deutsch! Das betrifft auch die komplette Dokumentation, also auch die IntelliSense Tipps. Eine super Sachen, finde ich, nicht weil ich Probleme mit der englischen Version hatte, sondern, weil es &#8230; <a href="http://niklas-rother.de/artikel/xna-4-0-in-deutsch-performance-tools/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Gleich zwei super Neuigkeiten heute:</p>
<ol>
<li>XNA gibt es jetzt auch <a href="http://blogs.msdn.com/b/astebner/archive/2010/10/18/10077455.aspx">auf Deutsch</a>! Das betrifft auch die komplette Dokumentation, also auch die IntelliSense Tipps. Eine super Sachen, finde ich, nicht weil ich Probleme mit der englischen Version hatte, sondern, weil es immer gestört hat, wenn im <em>deutschen</em> VisualStudio an und an <em>englische</em> Tooltipps erschienen</li>
<li>Es gibt von Microsoft ein &#8220;<a href="http://create.msdn.com/en-US/education/catalog/utility/performance_utility">Performance Utility</a>&#8220;. Das ist eine Overlaykomponente, mit der die Update und Draw Zeit angezeigt wird, eine FPS Anzeige, ein Overlay, dass einfach beliebige Werte anzeigt, und eine <strong>Ingame-Console</strong>.</li>
</ol>
<p>Besonders freut mich die Console (wenn sie gut ist <img src='http://niklas-rother.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), denn nachdem meine &#8220;alte&#8221; Console, nicht mehr für XNA 4.0 geupdatet wurde, musste ich mir was neues suchen. Für gewöhnlich sind die Sachen von Microsoft ja ziemlich gut (weil sie sie selber brauchen <img src='http://niklas-rother.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ), evtl. bleibt mir da noch Arbeit erspart. (<a href="http://blog.nickgravelyn.com/2010/03/know-when-to-be-lazy/">Know when to be lazy</a>)</p>
<p><span id="more-1046"></span></p>
<p>Der Test kommt, wenn ich wieder Windows gestartet habe.</p>
<br /><a href="http://niklas-rother.de/?p=1046#comments" title="Comments on &quot;XNA 4.0 in Deutsch &#038; Performance Tools&quot;"><img src="http://niklas-rother.de/wp-content/plugins/feed-comments-number/image.php?1046" alt="Comments" /></a>]]></content:encoded>
			<wfw:commentRss>http://niklas-rother.de/artikel/xna-4-0-in-deutsch-performance-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>100 FPS mehr durch Tilemap Clipping</title>
		<link>http://niklas-rother.de/artikel/100-fps-mehr-durch-tilemap-clipping/</link>
		<comments>http://niklas-rother.de/artikel/100-fps-mehr-durch-tilemap-clipping/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 16:24:26 +0000</pubDate>
		<dc:creator>Niklas</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[The Kingdom of Darkness]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Clipping]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tilemap]]></category>

		<guid isPermaLink="false">http://niklas-rother.de/?p=391</guid>
		<description><![CDATA[Da ich momentan noch auf Bug-Jagd durch die Tiefen von The Kingdom of Darkness bin, habe ich heute mal zu Abwechslung das Tilemap Clipping eingebaut. Durch diese Technik werden einfach nicht alle Tiles gezeichnet, sondern nur die, die auch grade &#8230; <a href="http://niklas-rother.de/artikel/100-fps-mehr-durch-tilemap-clipping/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Da ich momentan noch auf Bug-Jagd durch die Tiefen von The Kingdom of Darkness bin, habe ich heute mal zu Abwechslung das Tilemap Clipping eingebaut. Durch diese Technik werden einfach nicht alle Tiles gezeichnet, sondern nur die, die auch grade auf dem Bildschirm zu sehen sind.</p>
<p>Der Performancegewinn hängt von der Größe der Karte ab, bei mir hat es 100 FPS gebracht. Das ist weniger als es erstmal klingt, den ob ein Spiel nun mit  300 oder 400 Frames pro Sekunde läuft kann man nicht merken&#8230; Trotzdem hatte ich schon lange vor diese Technik einzubauen. Die Änerung ist eigentlich auch nur sehr klein:</p>
<p>
<pre class="brush: csharp; title: ; notranslate">
for (int i = (int)Camera.CameraPosition.X / 32; i &lt; Math.Min(((int)Camera.CameraPosition.X / 32) + 26, Tiles.Count); i++)
 {
 // Alle Spalten durchlaufen
 for (int j = (int)Camera.CameraPosition.Y / 32; j &lt; Math.Min(((int)Camera.CameraPosition.Y / 32) + 20, Tiles[0].Count); j++)
 {
</pre>
<p>
</p>
<p><span id="more-391"></span></p>
<p>statt</p>
<p>
<pre class="brush: csharp; title: ; notranslate">
for (int i = 0; i &lt; Tiles.Count; i++)
 {
 // Alle Spalten durchlaufen
 for (int j =0; j &lt;  Tiles[0].Count; j++)
 {
</pre>
</p>
<p>Und weiter geht die Bugsuche&#8230;.</p>
<br /><a href="http://niklas-rother.de/?p=391#comments" title="Comments on &quot;100 FPS mehr durch Tilemap Clipping&quot;"><img src="http://niklas-rother.de/wp-content/plugins/feed-comments-number/image.php?391" alt="Comments" /></a>]]></content:encoded>
			<wfw:commentRss>http://niklas-rother.de/artikel/100-fps-mehr-durch-tilemap-clipping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tKoD Performance um 500% verbessert!</title>
		<link>http://niklas-rother.de/artikel/tkod-performance-um-500-verbessert/</link>
		<comments>http://niklas-rother.de/artikel/tkod-performance-um-500-verbessert/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 18:09:16 +0000</pubDate>
		<dc:creator>Niklas</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[The Kingdom of Darkness]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://niklas-rother.de/?p=226</guid>
		<description><![CDATA[Es kling unglaublich ist aber wahr! Ich habe die Performance von tKoD mit 10 Zeilen Code Änderung um 500% verbessert! Ich hatte festgestellt, das ich im Menü 2800 FPS (normal für Menüs) hatte, im Spiel aber nur 75 FPS. Das &#8230; <a href="http://niklas-rother.de/artikel/tkod-performance-um-500-verbessert/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es kling unglaublich ist aber wahr! Ich habe die Performance von tKoD mit 10 Zeilen Code Änderung um 500% verbessert!</p>
<p>Ich hatte festgestellt, das ich im Menü 2800 FPS (normal für Menüs) hatte, im Spiel aber nur 75 FPS. Das ist zwar immer noch gut, aber für ein 2D Spiel auf einem guten Rechner nicht berauschend&#8230;</p>
<p>Also musste ein Profiler ran(Der von <a href="http://www.eqatec.com">EQAUTEC</a>, kann ich nur empfehlen). Das profilen ergab, dass die auffälligste Methode war die Kameraberechnung. Die sah so aus:</p>
<pre class="brush: csharp; title: ; notranslate">public static Vector2 CameraPosition
        {
            get
            {
                return new Vector2(
                    Math.Min(
                        TilemapHelper.ActiveTilemap.Width * 32 - GOA.Game.GraphicsDevice.Viewport.Width,
                        Math.Max(0, GOA.Hero.ExactPosition.X - GOA.Game.GraphicsDevice.Viewport.Width / 2)),
                    Math.Min(
                        TilemapHelper.ActiveTilemap.Height * 32 - GOA.Game.GraphicsDevice.Viewport.Height,
                        Math.Max(0, GOA.Hero.ExactPosition.Y - GOA.Game.GraphicsDevice.Viewport.Height / 2)));
            }
        }
</pre>
<p>Wo lag der Fehler? Ganz einfach, Camera Position wird bei jedem Tile und NPC abgefragt. Da .NET scheinbar das ganze nicht cached, wird die Position jedes Mal neu berechnet. Und das über 5.000 Mal pro Frame! Was also tun? Einfach den Wert selber cachen! Nur einmal pro Frame berechnen, und dann nur noch zurückgeben. Und schon hat man 500% mehr Performance!</p>
<p>Also: Benutzt einen Profiler, es lohnt sich!</p>
<br /><a href="http://niklas-rother.de/?p=226#comments" title="Comments on &quot;tKoD Performance um 500% verbessert!&quot;"><img src="http://niklas-rother.de/wp-content/plugins/feed-comments-number/image.php?226" alt="Comments" /></a>]]></content:encoded>
			<wfw:commentRss>http://niklas-rother.de/artikel/tkod-performance-um-500-verbessert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

