高德平台代理咋做?做高德平台代理待遇如何?

高德平台代理咋做?做高德平台代理待遇如何?-主管σσ【61806】认准老安Q【61806】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》

  之前一文《c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥》 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方信息的翻译开始做起。
  
  此系列系小九的学堂原创翻译,翻译自微软官方开发向导,一共分为六个主题。本文是第四个主题:.NET Native性能测试。
  
  向导文链接:《C++的性能C#的产能?! - .Net Native 系列:开发向导》
  
  [小九的学堂,致力于以平凡的语言描述不平凡的技术。如要转载,请注明来源:小九的学堂。cnblogs.com/xfuture]
  
  原文:Measuring Startup Improvement with .NET Native
  
  .NET Native性能测试
  
  .NET Framework 4.5
  
  小贴士
  
  这个主题依赖于预发行的.net native开发者预览版。下载地址: Microsoft Connect website. 友情提示需要注册..
  
  .net native显著提升了程序的启动时间,尤其是在低配置的设备和复杂程序上尤其明显。本主题将会告诉大家如何测试启动性能的提升。
  
  .net framework和windows使用了windows事件日志(ETW)的event tracing机制来进行性能测试。它可是使你的程序在触发事件时通知工具来进行记录。你可以使用PerfView来查看和分析ETW事件日志。
  
  下面主题将会分如下三步来进行阐述:
  
  1. 使用EventSource类来触发事件。  
  
  2. 使用PerfView来收集事件。
  
  3. 使用PerfView来进行事件分析。
  
  使用EventSource类来触发事件
  
  EventSource提供了一个可以自定义事件处理方法的基类。创建一个子类并继承它,重写它事件的方法。每一个eventsource都是单例模式。
  
  下面的类用来测试两个部分:1. app class构造函数被调用的时间 2. MainPage被调用的时间
  
  ?
  
  using System;
  
  using System.Diagnostics.Tracing;
  
  [EventSource(Name="MyCompany-MyApp")]
  
  public sealed class AppEventSource : EventSource
  
  {
  
  public static AppEventSource Log = new AppEventSource ();
  
  // The numbers passed to WriteEvent and EventAttribute
  
  // must increment with each logging method.
  
  [Event(1)]
  
  public void AppInitialized() { WriteEvent(1, ""); }
  
  [Event(2)]
  
  public void MainPageInitialized() { WriteEvent(2, ""); }
  
  }
  
  有几点需要注意:1. 在AppEventSource.Log里会创建一个单例的实例,该实例用于记录所有的日志。2. 每一个事件的方法都有一个Event的属性,这有助于关联WriteEvent索引和在该类上被调用的方法。
  
  上面代码中的两个事件仅作为范例。在上面两个事件触发后,绝大部分程序会开始运行。您应该了解运行中通过和用户交互会触发哪些其他的事件,并进行记录。这些事件记录在一个单例的日志里,这个对每个操作的起始和结束的记录非常有用。当检查程序启动的时候,一般来说启动事件都是操作系统发出的“Process/Start”事件。
  
  举例说明:你要创建一个RSS阅读器,有几个事件是需要记录的:
  
  1. 主页第一次呈现。
  
  2. 旧的RSS文章从本地存储反序列化到内存里。
  
  3. 当你的app开始同步新的RSS文章。
  
  4. 当你的app结束同步新的RSS文章。
  
  插入:很简单,只需要在相应位置调用AppEventSource.Log里的方法就可以记录了。
  
  ?
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  15
  
  16
  
  17
  
  18
  
  19
  
  20
  
  21
  
  22
  
  using System;
  
  using Windows.ApplicationModel;
  
  using Windows.UI.Xaml;
  
  public sealed partial class App
  
  {
  
  public App()
  
  {
  
  this.InitializeComponent();
  
  this.Suspending += OnSuspending;
  
  AppEventSource.Log.AppInitialized();
  
  }
  
  }
  
  public sealed partial class MainPage : Page
  
  {
  
  public MainPage()
  
  {
  
  this.InitializeComponent();
  
  AppEventSource.Log.MainPageInitialized();
  
  }
  
  <span style="color: rgb(0, 51, 102);">}
  
  </span>
  
  app启动后,就可以对这些事件进行收集了。
  
  使用PerfView收集事件
  
  PerfView使用ETW事件来进行各种性能测试信息的收集和研究。通过配置界面可以配置记录不同类型的事件。PerfView免费,可以在microsoft下载中心进行下载,教学视频。
  
  需要注意的是PerView不能收集ARM的事件,ARM事件需要使用Windows性能记录仪(WPR),关于WPF,可以点击Vance Morrison的博客。
  
  你也可以通过命令行来打开PerView:CMD->输入: perfview -KernelEvents:Process -OnlyProviders:*MyCompany-MyApp collect outputFile
  
  -KernelEvents:Process 表示记录程序起始和结束时间。-OnlyProviders:*MyCompany-MyApp 关闭其他的PerfView监视,开启属于自己的PerfView。collect outputFile 表示开始收集日志并将数据存入outputFile.etl.zip.
  
  开启PerfView后打开你的app。有些点需要注意:
  
  1. 使用release版本。debug版本包含了错误检查和调试代码,影响测试。
  
  2. 附加的调试器(Attach)会影响性能测试。
  
  3. Windows使用了缓存策略,以加快应用程序启动。如果你的app当前缓存在内存中,启动不需要从磁盘,则会迅速很多。所以在测试前,多关闭你的应用程序几次。或者注销。
  
  4. app运行时perfview就会收集信息,当停止时点击停止收集按钮。如果想收集关闭程序时的状态,则关闭app后再停止收集。
  
  使用PerfView来进行事件分析
  
  使用PerfView打开生成的.etl 或者 .etl.zip 后缀的文件既可以观察到收集的事件。ETW收集了包括其他进程的很多应用的日志。所以当你专注于分析自己app的时候,你还需要:
  
  1. 在Process Filter栏 输入你的app在进程中的名字。
  
  2. 在Event Types Filter栏 选择 Process/Start | MyCompany-MyApp。可以筛选出启动停止的事件。
  
  选择左边窗口所有的事件(Ctrl+A),点击回车。你就可以看到各个事件的时间段。这些时间都是相对于起始来进行计算的。
  
  按着Ctrl点击两个时间段,你就可以在底部看出两者的异处。可以选择导出成csv或者excel来进行报告的导出和保存。
  
  通过.net app和.net native app性能测试的比较,就可以得出.net native的性能提升。
  
  本人对一个app进行了初步的测试和比较,性能提升虽不如官网所写60%,但也有43.5%,可能是我的测试坏境会有一些影响。总之性能提升还是非常显著的!

猜你喜欢

转载自www.cnblogs.com/ycyhjj2865/p/12735303.html