Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(shape): wasm shape perf round-2 #19100

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Xiaoy312
Copy link
Contributor

GitHub Issue (If applicable): closes #19048

PR Type

What kind of change does this PR introduce?

  • Refactoring (no functional changes, no api changes)
  • Other... Please describe: perf

What is the current behavior?

todo

What is the new behavior?

todo

PR Checklist

Please check if your PR fulfills the following requirements:

Other information

@github-actions github-actions bot added the platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform label Dec 17, 2024
@Xiaoy312 Xiaoy312 force-pushed the dev/xygu/20241213/wasm-shape-perf-2 branch 2 times, most recently from 7d4a561 to 51e42b5 Compare December 17, 2024 21:23
@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-19100/index.html

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-19100/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 150491 has failed on Uno.UI - CI.

@Xiaoy312 Xiaoy312 force-pushed the dev/xygu/20241213/wasm-shape-perf-2 branch from 51e42b5 to bbd3dda Compare December 18, 2024 23:23
e.width.baseVal.value = width;
e.height.baseVal.value = height;

e.setAttribute('rx', rx.toString());
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the older code, we were using setAttribute (via setAttributesNativeFast)
but it seems that we could use .baseVal.value here also
but whats the ramification of that, and which to favor?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we can avoid using strings, why not, I don't think of any other ramifications.

@Xiaoy312
Copy link
Contributor Author

Xiaoy312 commented Dec 18, 2024

todo/fixme@xy:

  • deep subscription is broken: see [uitest]Shape_StrokeColor_ShouldRerenderWithChange
    ^ didnt we considered nested properties for invalidation..? also entire brush reassignment is failing too...
  • [uitest]When_SolidColorBrush_Color_Changed
  • nuke setSvgElementRect
    ^ mostly gone; src\Uno.UI\tsBindings\WindowManagerSetSvgElementRectParams.ts needs manual deletion?

@Xiaoy312 Xiaoy312 marked this pull request as ready for review December 18, 2024 23:42
@Xiaoy312 Xiaoy312 force-pushed the dev/xygu/20241213/wasm-shape-perf-2 branch 3 times, most recently from 4998cc7 to d3eb683 Compare December 19, 2024 00:02
@Xiaoy312 Xiaoy312 force-pushed the dev/xygu/20241213/wasm-shape-perf-2 branch from d3eb683 to 9f2fc93 Compare December 19, 2024 00:06
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-19100/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-19100/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 150568 has failed on Uno.UI - CI.

Copy link
Member

@jeromelaban jeromelaban left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥

e.width.baseVal.value = width;
e.height.baseVal.value = height;

e.setAttribute('rx', rx.toString());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we can avoid using strings, why not, I don't think of any other ramifications.

@nventive-devops
Copy link
Contributor

The build 150568 found UI Test snapshots differences: android-28-net8: 20, android-28-net8-Snap: 43, ios: 4, ios-Snap: 44, skia-gtk-screenshots: 54, skia-linux-screenshots: 47, skia-windows-screenshots: 62, wasm: 474, wasm-automated-net9.0-UWP-Default-automated: 39, wasm-automated-net9.0-UWP-RuntimeTests-0: 0, wasm-automated-net9.0-UWP-RuntimeTests-1: 0, wasm-automated-net9.0-UWP-RuntimeTests-2: 0, wasm-automated-net9.0-WinUI-Benchmarks-automated: 0, wasm-automated-net9.0-WinUI-RuntimeTests-0: 0, wasm-automated-net9.0-WinUI-RuntimeTests-1: 0, wasm-automated-net9.0-WinUI-RuntimeTests-2: 0

Details
  • android-28-net8: 20 changed over 829

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Detereminate_ProgressRing_Validation25_[#FF0000_#008000_#FF0000_#FF0000]_Progress-Ring-Value-25
    • SelectionTest_UITests_Microsoft_UI_Xaml_Controls_RadioButtonsTests_RadioButtonsPage
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
    • When_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_MultipleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • DecimalFormatterTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • ProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • SelectionOnLoad_UITests_Microsoft_UI_Xaml_Controls_RadioButtonsTests_RadioButtonsInitialLoadSelected
    • When_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_Parent_PointerMoved_After_drag_on_non-scrolling_ScrollViewer
    • When_Parent_PointerMoved_After_drag_on_ScrollViewer_-_touch
    • ListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • Pivot_Non_PivotItemChange_Validation_UITests_Shared_Windows_UI_Xaml_Controls_Pivot_Pivot_CustomContent_Automated
    • NativeCommandBar_Size_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_Dynamic
    • Detereminate_ProgressRing_Validation75_[#FF0000_#008000_#008000_#008000]_Progress-Ring-Value-75
    • Detereminate_ProgressRing_Validation50_[#FF0000_#008000_#008000_#FF0000]_Progress-Ring-Value-50
    • WebView_NavigateToAnchor_Uno_UI_Samples_Content_UITests_WebView_WebView_AnchorNavigation
    • UpDownEnabledTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • UpDownTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
  • android-28-net8-Snap: 43 changed over 1066

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ListView_ListView_With_ListViews_Count_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_Measure
    • NavigationView_MUXControlsTestApp_NavigationViewTopNavPage_MUXControlsTestApp_NavigationViewTopNavPage
    • Pickers_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming
    • Image_UITests_Windows_UI_Xaml_Controls_ImageTests_SvgImageSource_NoSize_UITests_Windows_UI_Xaml_Controls_ImageTests_SvgImageSource_NoSize
    • Gesture_Recognizer_Pointer_Events_test_bench_UITests_Shared_Windows_UI_Input_GestureRecognizer_PointersEvents
    • SwipeControl_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ScrollViewer_UITests_Windows_UI_Xaml_Controls_SwipeControlTests_SwipeControl_ScrollViewer
    • TabView_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewBasicPage_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewBasicPage
    • TabView_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewItemsSourceTests_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewItemsSourceTests
    • TabView_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewPage_UITests_Microsoft_UI_Xaml_Controls_TabViewTests_TabViewPage
    • TextBox_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_VerticalAlignment_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_VerticalAlignment
    • TextBox_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Visibility_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Visibility
    • TextBox_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Wrapping_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Wrapping
    • MediaPlayerElement_Using_3gp_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_3gp_Extension
    • MediaPlayerElement_Using_mp3_Audio_only_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Mp3_Extension
    • MediaPlayerElement_Using_ogg_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Ogg_Extension
    • Scrolling_MUXControlsTestApp_ScrollViewKeyboardAndGamepadNavigationPage_MUXControlsTestApp_ScrollViewKeyboardAndGamepadNavigationPage
    • TextBlock_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Layout_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Layout
    • Transform_Basics_UITests_Shared_Windows_UI_Xaml_Media_Transform_Basics
    • WebView_UITests_Microsoft_UI_Xaml_Controls_WebView2Tests_WebView2_NavigationProperties_UITests_Microsoft_UI_Xaml_Controls_WebView2Tests_WebView2_NavigationProperties
    • WebView_UITests_Windows_UI_Xaml_Controls_WebView_WebView_Title_UITests_Windows_UI_Xaml_Controls_WebView_WebView_Title
  • ios: 4 changed over 267

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • TextBox_UpdatedBinding_On_OneWay_Mode_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Bindings
    • When_NoSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
  • ios-Snap: 44 changed over 1057

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Brushes_ImageBrushWithCompositeTransform_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushWithCompositeTransform
    • ListView_ListView_Image_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListView_Image
    • Brushes_PanelImageBrush_Uno_UI_Samples_UITests_ImageBrushTestControl_PanelImageBrush
    • Default_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected
    • Image_ImageSourceStream_Uno_UI_Samples_UITests_ImageTestsControl_ImageSourceStream
    • TextBlock_SimpleText_MaxLines_Different_Font_Size_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_SimpleText_MaxLines_Different_Font_Size
    • Brushes_ImageBrushWithScaleTransform_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushWithScaleTransform
    • Grid_CenteredGridinGridwiththreefixedsizechildren_Uno_UI_Samples_Content_UITests_GridTestsControl_CenteredGridinGridwiththreefixedsizechildren
    • TextBlock_TextBlock_FixedWidth_With_DataBound_Run_Uno_UI_Samples_Content_UITests_TextBlockControl_TextBlock_FixedWidth_With_DataBound_Run
    • Pickers_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarDatePicker_Basics_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarDatePicker_Basics
    • Brushes_BorderImageBrush_Uno_UI_Samples_UITests_ImageBrushTestControl_BorderImageBrush
    • GridView_Uno_UI_Samples_Content_UITests_GridView_GridViewVariableItemHeight_Uno_UI_Samples_Content_UITests_GridView_GridViewVariableItemHeight
    • Image_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Alignment_SizeOnControl_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Alignment_SizeOnControl
    • ListView_ListView_With_ListViews_Count_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_Measure
    • NavigationView_MUXControlsTestApp_NavigationViewMenuItemStretchPage_MUXControlsTestApp_NavigationViewMenuItemStretchPage
    • NavigationView_MUXControlsTestApp_NavigationViewMinimalPage_MUXControlsTestApp_NavigationViewMinimalPage
    • ColorPicker_WinUIColorPickerPage_UITests_Shared_Microsoft_UI_Xaml_Controls_ColorPickerTests_WinUIColorPickerPage
    • Image_UITests_Windows_UI_Xaml_Controls_ImageTests_Image_Formats_UITests_Windows_UI_Xaml_Controls_ImageTests_Image_Formats
    • Shapes_LinePage_SamplesApp_Windows_UI_Xaml_Shapes_LinePage
    • Brushes_ImageBrushStretch2_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushStretch2
  • skia-gtk-screenshots: 54 changed over 2230

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Gamepad_CurrentReading.png-dark
    • CalendarView_Theming.png
    • Popup_HVAlignments.png-dark
    • Popup_HVAlignments.png
    • BorderImageBrush.png-dark
    • SplitButtonTestsPage.png-dark
    • TransformToVisual_Simple.png-dark
    • TransformToVisual_Simple.png
    • ClipboardTests.png-dark
    • CalendarView_Theming.png-dark
    • ImageBrushAlignmentXY2.png-dark
    • ImageBrushAlignmentXY2.png
    • DisplayInformation.png-dark
    • DisplayInformation.png
    • Buttons.png
    • Buttons.png-dark
    • ContentPresenter_NativeEmbedding.png-dark
    • ContentPresenter_NativeEmbedding.png
    • Ellipse.png-dark
    • Ellipse.png
  • skia-linux-screenshots: 47 changed over 2230

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DropDownButtonPage.png-dark
    • Gamepad_Enumeration.png-dark
    • BorderImageBrush.png-dark
    • BorderImageBrush.png
    • ImageBrushInList.png-dark
    • ImageBrushInList.png
    • ButtonClippingTestsControl.png-dark
    • ClipboardTests.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Image_UseTargetSize.png-dark
    • Image_UseTargetSize.png
    • Buttons.png-dark
    • Buttons.png
    • Focus_FocusVisual_Properties.png-dark
    • ImageIconPage.png
    • Examples.png
    • DisplayInformation.png-dark
    • ListViewHeaderUpdate.png-dark
    • ListViewHeaderUpdate.png
  • skia-windows-screenshots: 62 changed over 2230

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Gamepad_CurrentReading.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • AppWindowPositionAndSize.png-dark
    • DropDownButtonPage.png-dark
    • ImageBrush_UniformToFill.png-dark
    • ImageBrush_UniformToFill.png
    • ImageIconPage.png-dark
    • ImageIconPage.png
    • ClipboardTests.png
    • AppWindowPositionAndSize.png
    • CalendarView_Theming.png-dark
    • DisplayInformation.png-dark
    • DisplayInformation.png
    • ImageBrushAlignmentXY2.png-dark
    • ImageBrushAlignmentXY2.png
    • BorderImageBrush.png-dark
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
  • wasm: 474 changed over 1043

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • SamplesApp.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_Static
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_Legacy
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ComboBox.ComboBox_With_ItemContainerStyle
    • SamplesApp.Wasm.Windows_UI_Xaml_Media.Transform.Grid_With_RotateTransform_And_Button
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.HorizontalListViewImage
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListView_TextBox
    • SamplesApp.Windows_UI_Xaml_Shapes.StretchPage
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ColorPickerTests.WinUIColorPickerPage
    • UITests.Shared.Windows_Security_Credentials.PasswordVaultTests.CredentialsPersistence
    • UITests.Shared.Windows_System.Display.DisplayRequest
    • UITests.Shared.Windows_UI_Xaml.Clipping.ClippingToControlBounds
    • UITests.Shared.Windows_UI_Xaml.VisualStateTests.VisualState_ComplexSetters_Automated
    • UITests.Shared.Windows_UI_Xaml.WebView2_Alert
    • UITests.Shared.Windows_UI_Xaml_Controls.GridTestsControl.Grid_Spacing_Adjustable
    • UITests.Shared.Windows_UI_Xaml_Controls.GridTestsControl.Grid_with_OutOfRange_Cells
    • UITests.Shared.Windows_UI_Xaml_Controls.ScrollViewerTests.ScrollViewer_Simple
    • UITests.Shared.Windows_UI_Xaml_Controls.TextBlockControl.Foreground_Brushes
    • UITests.Shared.Windows_UI_Xaml_Media.Transform.List_With_Transformed_Ancestor
    • UITests.Windows_UI_ViewManagement.UISettingsTests
    • UITests.Windows_UI_Xaml.Clipping.BorderVisualClipping
  • wasm-automated-net9.0-UWP-Default-automated: 39 changed over 1946

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Affect_Measurement_polyline_PolylinePage_-_ClearShape
    • Default_StrokeThickness_MyLine
    • Default_StrokeThickness_MyPath
    • Affect_Measurement_polygon_PolygonPage_-_ClearShape
    • Default_StrokeThickness_MyPolyline
    • Expander_WinUIExpanderPage_UITests_Shared_Microsoft_UI_Xaml_Controls_ExpanderTests_WinUIExpanderPage
    • MediaPlayerElement_Mini_player_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Minimal
    • MediaPlayerElement_Sources_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Sources
    • MediaPlayerElement_Using_3gp_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_3gp_Extension
    • Brushes_BorderImageBrush_Uno_UI_Samples_UITests_ImageBrushTestControl_BorderImageBrush
    • Default_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected
    • Default_StrokeThickness_MyEllipse
    • Default_StrokeThickness_MyEllipse_0_StrokeThickness
    • ListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • Default_StrokeThickness_MyRect
    • Default_StrokeThickness_MyRect_0_StrokeThickness
    • MediaPlayerElement_Using_mp3_Audio_only_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Mp3_Extension
    • MediaPlayerElement_Using_ogg_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Ogg_Extension
    • Brushes_Uno_UI_Samples_Samples_Shared_Content_UITests_ImageBrushInList_Uno_UI_Samples_Samples_Shared_Content_UITests_ImageBrushInList
    • Pickers_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming_UITests_Windows_UI_Xaml_Controls_CalendarView_CalendarView_Theming
  • wasm-automated-net9.0-UWP-RuntimeTests-0: 0 changed over 1

  • wasm-automated-net9.0-UWP-RuntimeTests-1: 0 changed over 1

  • wasm-automated-net9.0-UWP-RuntimeTests-2: 0 changed over 1

  • wasm-automated-net9.0-WinUI-Benchmarks-automated: 0 changed over 1

  • wasm-automated-net9.0-WinUI-RuntimeTests-0: 0 changed over 1

  • wasm-automated-net9.0-WinUI-RuntimeTests-1: 0 changed over 1

  • wasm-automated-net9.0-WinUI-RuntimeTests-2: 0 changed over 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[WASM] batch attributes updates in Shape::UpdateRender
4 participants