{"id":402,"date":"2009-01-17T10:32:29","date_gmt":"2009-01-17T09:32:29","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=402"},"modified":"2010-01-19T14:42:44","modified_gmt":"2010-01-19T13:42:44","slug":"drawtext-unter-vista-gegenueber-xp-um-bis-zu-faktor-50-langsamer","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2009\/01\/17\/drawtext-unter-vista-gegenueber-xp-um-bis-zu-faktor-50-langsamer\/","title":{"rendered":"DrawText unter Vista gegen\u00fcber XP um bis zu Faktor 50 langsamer!"},"content":{"rendered":"<p>\u2757 Ja Ihr habt ganz richtig gelesen und ich irre mich nicht \u2757<\/p>\n<p>Wir haben in einem unserer C++\/<em>MFC<\/em> Programmen eine komplexe Anzeige von Reports, die alle unterschiedliche Zeilenh\u00f6he haben und in einem speziellen Fenster angezeigt werden (eigene Entwicklung).<br \/>\nNun stellten wir fest, dass das Rollen in diesem Programmteil auf <em>Vista<\/em>-Rechnern mit viel Nachlauf funktionierte und auch einige andere Operationen l\u00e4nger als gewohnt dauerten. Bei meinem Suchen, Profilen und Testen kam ich auf ein sehr lahmes Abarbeiten der Funktion <em>DrawText\u00a0 <\/em>mit <em>DT_CALCRECT<\/em>.<\/p>\n<p>Um das Problem zu isolieren schrieb ich ein kleines Testprogramm, das erstaunliches zu Tage brachte.<br \/>\nHier die Ergebnisse von 4 verschiedenen Rechnern (Durchlauf von 100&#215;100 <em>DrawText<\/em> Calls):<\/p>\n<ul>\n<li>Pentium Quad-Core Q8200 mit <strong>Vista: 48.111 msec<\/strong><\/li>\n<li>Pentium Core2Duo T2310 mit <strong>Vista: 78.953 msec<\/strong><\/li>\n<li>Pentium Dual Core 3,2Ghz mit <strong>XP: 1.516 msec<\/strong><\/li>\n<li>Alter Pentium 3,0Ghz HT mit <strong>XP: 1.922 msec<\/strong><\/li>\n<\/ul>\n<p><strong>\ud83d\ude2f Der Code ist teilweise um\u00a0den Faktor 50 langsamer\u00a0auf <em>Windows-Vista<\/em> im Vergleich zu <em>Windows-XP <\/em>\u2757<\/strong><\/p>\n<p>Wer Lust hat es selbst zu testen, der findet hier das Beispielprogramm im Sourcecode (VS-2005):\u00a0 <a href=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/01\/testdrawtext.zip\">TestDrawText.zip<\/a><br \/>\nWer das Programm als Exe m\u00f6chte findet es hier: <a href=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/01\/testdrawtextexe.zip\">TestDrawTextExe.zip<\/a><\/p>\n<p><strong>Beschreibung:<br \/>\n<\/strong>Dieses Beispielprogramm f\u00fchrt gem\u00e4\u00df einem angegebenen Z\u00e4hler je 100mal <em>DrawText <\/em>mit <em>DT_CALCRECT <\/em>f\u00fcr einen l\u00e4ngeren mehrzeiligen Text aus. Hierbei werden immer zuf\u00e4llige Textl\u00e4ngen verwendet. Der Algorithmus liefert jedoch immer die gleiche Zufallssequenz, damit der Test auch Vergleichbar bleibt.<br \/>\nDer Zufallsmechanismus wurde nur eingebaut, um f\u00fcr f\u00fcr meinen Fall realit\u00e4tsnahe Daten zu liefern.<\/p>\n<p><strong>Anmerkung:<\/strong><br \/>\nEine entsprechende Supportanfrage bei <em>Microsoft<\/em> l\u00e4uft \u2757<br \/>\nWas dabei herauskommt werde ich berichten&#8230;<\/p>\n<p><strong>Zuletzt angemerkt:<br \/>\n<\/strong><em>Windows 7 <\/em>soll ja schneller sein als <em>Windows Vista<\/em>. Wer wei\u00df? Ich habe es noch nicht getestet.<br \/>\nVieleicht haben die nur diesen Bug gefixed und einen gigantischen Performanceschub erhalten <img src=\"http:\/\/blog.m-ri.de\/wp-includes\/images\/smilies\/mrgreen.png\" alt=\":mrgreen:\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> &#8230; SCNR&#8230;<\/p>\n<p><strong>Nachtrag\u00a0(11.07.2009):\u00a0<br \/>\nDie Auifl\u00f6sung zu diesem Problem findet sich hier in diesem Artikel\u00a0<\/strong><a href=\"http:\/\/blog.m-ri.de\/index.php\/2009\/07\/11\/ausloesung-drawtext-unter-vista-gegenueber-xp-um-bis-zu-faktor-50-langsamer\/\"><strong>http:\/\/blog.m-ri.de\/index.php\/2009\/07\/11\/ausloesung-drawtext-unter-vista-gegenueber-xp-um-bis-zu-faktor-50-langsamer\/<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2757 Ja Ihr habt ganz richtig gelesen und ich irre mich nicht \u2757 Wir haben in einem unserer C++\/MFC Programmen eine komplexe Anzeige von Reports, die alle unterschiedliche Zeilenh\u00f6he haben und in einem speziellen Fenster angezeigt werden (eigene Entwicklung). Nun stellten wir fest, dass das Rollen in diesem Programmteil auf Vista-Rechnern mit viel Nachlauf funktionierte &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2009\/01\/17\/drawtext-unter-vista-gegenueber-xp-um-bis-zu-faktor-50-langsamer\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDrawText unter Vista gegen\u00fcber XP um bis zu Faktor 50 langsamer!\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,3,12,14,17],"tags":[99,160,358,141],"class_list":["post-402","post","type-post","status-publish","format-standard","hentry","category-debugging","category-programmieren","category-software","category-vista","category-vista-2","tag-bug","tag-perfomance","tag-vista","tag-xp"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=402"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/402\/revisions"}],"predecessor-version":[{"id":404,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/402\/revisions\/404"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=402"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}