The new version of WPF Performance Profiling Tool is available for download

26 בספטמבר 2008

5 תגובות

[This blog was migrated. You will not be able to comment here.
The new URL of this post is http://khason.net/blog/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download/]


Finally, after a long time of silence, the new version of WPF Performance Profiling Tool is available for download for x32 and x64 OSs.  So, what’s new there?

Ton of UI improvements for Visual Profiler

image

New search function to quick find elements in visual tree

image

Hot path (critical path) of CPU usage aside with CPU usage for single element

image

Configuration of tint for overlay windows

image

Live preview, ability to split columns, slider of graph duration, expanders to have cleaner screen and much much more

Perforator also got new UI and has history now.

image

There is new tool, named String allocation profiler

image

This tool is very useful for viewing and managing strings inside your application (another step toward normal localization support for WPF? Probably)

There are also some improvements in Event tracing tool. Select process for example :)

image

And much much more. Great thank to Josef and his team for this great work

Download the new version of WPF Performance Profiling Tool >>

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

5 תגובות

  1. leonardo26 בספטמבר 2008 ב 19:01

    Perforator and Visual Profiler crash on Vista Sp1 and Xp Sp3, please fix before post download (and x64 version isn't out yet):

    System.Windows.Markup.XamlParseException was unhandled
    Message="Impossibile assegnare il valore 'System.Windows.Data.BindingExpression' alla proprietà 'BorderThickness' dell'oggetto 'System.Windows.Controls.Border'. La stringa '1,1,0,0' non può essere convertita in Length. Errore in corrispondenza dell'oggetto 'System.Windows.Data.Binding'."
    Source="PresentationFramework"
    LineNumber=0
    LinePosition=0
    NameContext="BorderThickness"
    StackTrace:
    in System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
    in System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
    in System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message, Exception innerException)
    in System.Windows.Markup.BamlRecordReader.SetDependencyComplexProperty(Object currentTarget, BamlAttributeInfoRecord attribInfo, Object o)
    in System.Windows.Markup.BamlRecordReader.SetPropertyValueToParent(Boolean fromStartTag, Boolean& isMarkupExtension)
    in System.Windows.Markup.BamlRecordReader.ReadElementEndRecord(Boolean fromNestedBamlRecordReader)
    in System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
    in System.Windows.StyleHelper.LoadOptimizedTemplateContent(DependencyObject container, ParserContext parserContext, OptimizedTemplateContent optimizedTemplateContent, FrameworkTemplate frameworkTemplate, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
    in System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
    in System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)
    in System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)
    in System.Windows.FrameworkElement.ApplyTemplate()
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
    in System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
    in System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
    in System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in System.Windows.Controls.Control.MeasureOverride(Size constraint)
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in System.Windows.Controls.Grid.MeasureOverride(Size constraint)
    in System.Windows.FrameworkElement.MeasureCore(Size availableSize)
    in System.Windows.UIElement.Measure(Size availableSize)
    in System.Windows.ContextLayoutManager.UpdateLayout()
    in System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
    in System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
    in System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
    in System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
    in System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
    in System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
    in System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
    in System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
    in System.Windows.Threading.DispatcherOperation.InvokeImpl()
    in System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
    in System.Threading.ExecutionContext.runTryCode(Object userData)
    in System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
    in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    in System.Windows.Threading.DispatcherOperation.Invoke()
    in System.Windows.Threading.Dispatcher.ProcessQueue()
    in System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    in MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    in MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
    in System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
    in System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
    in System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
    in System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
    in System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
    in MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    in MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
    in System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
    in System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
    in System.Windows.Threading.Dispatcher.Run()
    in System.Windows.Application.RunDispatcher(Object ignore)
    in System.Windows.Application.RunInternal(Window window)
    in System.Windows.Application.Run(Window window)
    in System.Windows.Application.Run()
    in Microsoft.WpfPerformance.WpfPerformanceMain.StartApplication()
    in Microsoft.WpfPerformance.WpfPerformanceMain.Main()
    InnerException: System.FormatException
    Message="La stringa '1,1,0,0' non può essere convertita in Length."
    Source="PresentationFramework"
    StackTrace:
    in System.Windows.LengthConverter.FromString(String s, CultureInfo cultureInfo)
    in System.Windows.ThicknessConverter.FromString(String s, CultureInfo cultureInfo)
    in System.Windows.ThicknessConverter.ConvertFrom(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, Object source)
    in System.ComponentModel.TypeConverter.ConvertFrom(Object value)
    in Microsoft.WpfPerformance.Data.ThicknessMaskConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
    in System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
    in System.Windows.Data.BindingExpression.Activate(Object item)
    in System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt attempt)
    in System.Windows.Data.BindingExpression.AttachOverride(DependencyObject target, DependencyProperty dp)
    in System.Windows.Data.BindingExpressionBase.Attach(DependencyObject target, DependencyProperty dp)
    in System.Windows.Data.BindingExpressionBase.OnAttach(DependencyObject d, DependencyProperty dp)
    in System.Windows.StyleHelper.GetInstanceValue(UncommonField`1 dataField, DependencyObject container, FrameworkElement feChild, FrameworkContentElement fceChild, Int32 childIndex, DependencyProperty dp, Int32 i, EffectiveValueEntry& entry)
    in System.Windows.TemplateApplicationHelper.SetDependencyValueCore(DependencyObject dependencyObject, DependencyProperty dp, Object value)
    in System.Windows.Markup.BamlRecordReader.SetDependencyValue(DependencyObject dependencyObject, DependencyProperty dependencyProperty, Object value)
    in System.Windows.Markup.BamlRecordReader.SetDependencyComplexProperty(Object currentTarget, BamlAttributeInfoRecord attribInfo, Object o)
    InnerException:

    להגיב
  2. Tamir Khason27 בספטמבר 2008 ב 2:12

    leonardo, I think, that .NET 3.5 SP1 is what you are missing in your machines

    להגיב
  3. Christian27 בספטמבר 2008 ב 4:22

    Same problem here on Vista x86 SP1 with .Net 3.5 SP1 (I also have windows SDK installed…)

    להגיב
  4. Christian27 בספטמבר 2008 ב 5:44

    Got it !
    My box is running Belgium-Dutch so it had a ',' as decimal seperator and '.' as group seperator. I just changed this to US standards for the test and it works…

    להגיב
  5. Ken24 באוקטובר 2008 ב 18:10

    Is there any way to log the results to disk. I'm trying to compare the rendering speed of two controls.

    להגיב