Windows Phone 7 - 程序性能分析器

openkk 12年前
     <p>如何哪个平台的开发,性能是至关重要的,尤其是移动开发,用户最关心的是你的应用的响应速度其次才是创意。网上有很实用的工具叫EQATEC Profiler ,这是一个针对.NET平台的一个性能分析器,可以分析WP7 而面加载、执行的效率时间,不过针对 WP7有几点限制,最大的限制是其不支持XNA 开发的WP7程序,以下是其限制清单:</p>    <ul>     <li>Only WP7 Silverlight apps are supported for now, not WP7 XNA apps</li>     <li>Constructors are not timed due to a WP7 IL-verifier <a href="/misc/goto?guid=4959500052303877654" rel="nofollow">problem</a></li>     <li>The profiler cannot at present take an automatic snapshot when the WP7 app closes, so you must take snapshots manually during the execution.</li>     <li>WP7 is very new technology; the APIs may change and potentially break the profiler. We'll strive to stay ahead and appreciate any WP7-feedback from you all.</li>    </ul>    <p>下载地址:<a href="/misc/goto?guid=4959500052396316896" rel="nofollow" target="_blank">点击我</a></p>    <p>进入该网址,填写几个必要信息即可,他会把下载地址发到你邮箱,进入你的邮箱点击对应链接下载即可,不过下载速度,真他N的慢。下载完后,直接安装即可,不用配置。</p>    <p>好了,下面我们就用两段代码来测试它的分析效果吧。</p>    <p>要测试的页面效果如下:</p>    <p><img alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/c415b6eff5468ae89a97e2d70e2d6979.png" width="329" height="435" /></p>    <p> </p>    <p>点击按钮后,会执行一个方法,这里我们编写两个相同名称的方法,分不同时候加载,然后看加载后两个方法的执行效率如何,代码如下:</p>    <p></p>    <pre class="brush:c#; toolbar: true; auto-links: false;">void test()         {             string a = "";             for (int i = 0; i < 10000; i++)             {                  a += i.ToString() + "\r\n";              }             tb_test.Text = a;         }   void test()         {             StringBuilder sb = new StringBuilder();             for (int i = 0; i < 10000; i++)             {                  sb.Append(i.ToString() + "\r\n");             }             tb_test.Text = sb.ToString();         }</pre>    <p></p>    <p>好了,开始使用这个工具。</p>    <p>为了安全起见,我们先把代码编译一遍,确认没有报错才打开该工具。</p>    <p>该工具的起始界面如下 :</p>    <p><img style="width:710px;height:512px;" alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/8ba6fe15f5aeba8efc2e4e312d22e80d.png" /></p>    <p>如上图,App path:是你当前要测试的应用程序Bin 下面的Debug 目录,如果正确的话它会默认勾选上你的dll文件。之后点击右下角的Build按钮,显示Done 执编译通过:</p>    <p><img alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/ed8301b5a886d7965c61fcaa3cc4f69f.png" width="521" height="188" /></p>    <p>通过后,旁边的Run app 按钮会可用,点击它启动设备,如果你是用的手机测试的话,不是用手机则选择Emulator选项,同时点击Run</p>    <p><img alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/568c6d5dbe770934eb3d59459f8013eb.png" width="469" height="320" /></p>    <p>注意,如果此时无法打开模拟器或者报当前资源正在使用,请把你打开的模拟器关掉,重新运行。确保一切没问题后,EQATEC Profile 会为我们打开一个模拟器,并导航到我们要APP界面。</p>    <p> </p>    <p>点击上面的按钮,等程序执行完毕后,点击EQATEC Profile 的RUN选项卡,点击该界面上的Take snapshot 按钮,可以得到一份执行效率日志表,如下图:</p>    <p><img alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/cd3eb5aa493c2a07f2ec70c483bf41eb.png" width="692" height="492" /></p>    <p>第一次我们执行的是第一个代码的方法,选中我们生成的日志,点击右下方的VIEW按钮,可以查看一份详细的执行效率,如下 图:</p>    <p><img style="width:602px;height:308px;" alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/0b8ea6fcbde28eb1496858538c461e28.png" /></p>    <p> </p>    <p>如上图,MainPage里面的test 方法执行时间为3351MS,多么耗时的一个操作,换第二个方法试试:</p>    <p><img style="width:713px;height:393px;" alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/7b3bc9434ed0f66ce2f59d12e9a9f461.png" /></p>    <p>看看mainPage里面的test 方法执行时间是多长,89MS,相差多大,多么神奇的东西,居家必备、杀人越货的的东西呀。。。</p>    <p>这个工具用到这里,己经感觉很强大了,最后一个选项卡是可以把两个日志拿起来对比,它会告诉你,你的第二个日志是好的还是差的,比如比第一个好会标志绿色字体,而差则会显示红色字体,如下图如示:</p>    <p><img style="width:644px;height:300px;" alt="Windows Phone 7 - 程序性能分析器" src="https://simg.open-open.com/show/564b51843c1fa95677983f3cca39e4da.png" /></p>