ColumnSeries 使用 Syncfusion 渲染 Xamarin.Forms 需要很多时间
ColumnSeries takes a lot of time to render using Syncfusion for Xamarin.Forms
使用最新版本的 SfChart for Xamarin.Forms (16.3.0.36) 我遇到了以下问题:ColumnSeries 需要大量时间来呈现一个小集合(一个集合的集合需要超过 10 秒)几条记录)与 LineSeries 相比(相同集合大小少于 3 秒)。
事实上,使用调试器我发现加载包含 ColumnSeries 图表的视图是最耗时的部分,甚至在设置图表数据之前。我以同样的方式使用 LineSeries,它加载速度更快。
我正在为 ColumnSeries 使用以下代码:
<chart:SfChart x:Name="SumChart1" Margin="5,0,10,0">
<chart:SfChart.PrimaryAxis>
<chart:DateTimeAxis Title="Time" EdgeLabelsDrawingMode="Center"
IntervalType="{Binding IntervalType, Mode=TwoWay}"
x:Name="SumAxis" />
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis Title="{Binding SelectedVariableForGraph.Name}" />
</chart:SfChart.SecondaryAxis>
<chart:ColumnSeries
x:Name="SumSeries"
Label="Sum"
XBindingPath="Key"
YBindingPath="Value"
ItemsSource="{Binding SumGraph, Mode=TwoWay}"
ListenPropertyChange="True"
>
<chart:ColumnSeries.ColorModel>
<chart:ChartColorModel>
<chart:ChartColorModel.CustomBrushes>
<Color>Orange</Color>
</chart:ChartColorModel.CustomBrushes>
</chart:ChartColorModel>
</chart:ColumnSeries.ColorModel>
</chart:ColumnSeries>
</chart:SfChart>
我只对修复 Android 版本感兴趣。
我已经使用 HAXM Android 模拟器和小米 Mi A1 设备测试了这个问题,结果相似(设备似乎只快一点)。
在搜索此问题的答案时,我发现 "SfChart renders column series in Android and iOS as FastColumn series by default" (https://www.syncfusion.com/forums/138607/fastcolumnbitmapseries-on-sfchart-xforms),但这似乎不适用于我的情况(Android)。
有什么我遗漏的吗?
编辑:
我正在使用 SfTabItem 来显示图表(页面中有 3 个 ColumnSeries 和 1 个系列图表)。 X轴是DateTime类型,Y轴是double类型。这个细节似乎是导致问题的原因
我们最终无法重现所报告的问题,我们准备了一个示例,可以从下面的 link.
下载示例
由于我们不了解您的确切应用场景,因此我们最终无法重现此问题,请您根据您的应用和复制过程修改示例来回复我们。这将有助于我们进一步调查并尽早为您提供更好的解决方案。
我可以在最后重现报告的场景,我想让你知道,在你的示例中,你只为所有图表提供了间隔类型作为天数,但绑定值不同,如月和年,以至于渲染需要花费太多时间。因为计算了自动间隔,并且为这么多年的所有日子呈现网格线。因此,您必须根据给定数据设置 Interval 和 IntervalType 否则您需要设置任何内容,图表将自动计算区间和区间类型根据数据。我们已经根据那个修改了你的样本,可以从下面的link.
下载。
使用最新版本的 SfChart for Xamarin.Forms (16.3.0.36) 我遇到了以下问题:ColumnSeries 需要大量时间来呈现一个小集合(一个集合的集合需要超过 10 秒)几条记录)与 LineSeries 相比(相同集合大小少于 3 秒)。
事实上,使用调试器我发现加载包含 ColumnSeries 图表的视图是最耗时的部分,甚至在设置图表数据之前。我以同样的方式使用 LineSeries,它加载速度更快。
我正在为 ColumnSeries 使用以下代码:
<chart:SfChart x:Name="SumChart1" Margin="5,0,10,0">
<chart:SfChart.PrimaryAxis>
<chart:DateTimeAxis Title="Time" EdgeLabelsDrawingMode="Center"
IntervalType="{Binding IntervalType, Mode=TwoWay}"
x:Name="SumAxis" />
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis Title="{Binding SelectedVariableForGraph.Name}" />
</chart:SfChart.SecondaryAxis>
<chart:ColumnSeries
x:Name="SumSeries"
Label="Sum"
XBindingPath="Key"
YBindingPath="Value"
ItemsSource="{Binding SumGraph, Mode=TwoWay}"
ListenPropertyChange="True"
>
<chart:ColumnSeries.ColorModel>
<chart:ChartColorModel>
<chart:ChartColorModel.CustomBrushes>
<Color>Orange</Color>
</chart:ChartColorModel.CustomBrushes>
</chart:ChartColorModel>
</chart:ColumnSeries.ColorModel>
</chart:ColumnSeries>
</chart:SfChart>
我只对修复 Android 版本感兴趣。 我已经使用 HAXM Android 模拟器和小米 Mi A1 设备测试了这个问题,结果相似(设备似乎只快一点)。
在搜索此问题的答案时,我发现 "SfChart renders column series in Android and iOS as FastColumn series by default" (https://www.syncfusion.com/forums/138607/fastcolumnbitmapseries-on-sfchart-xforms),但这似乎不适用于我的情况(Android)。
有什么我遗漏的吗?
编辑: 我正在使用 SfTabItem 来显示图表(页面中有 3 个 ColumnSeries 和 1 个系列图表)。 X轴是DateTime类型,Y轴是double类型。这个细节似乎是导致问题的原因
我们最终无法重现所报告的问题,我们准备了一个示例,可以从下面的 link.
下载示例由于我们不了解您的确切应用场景,因此我们最终无法重现此问题,请您根据您的应用和复制过程修改示例来回复我们。这将有助于我们进一步调查并尽早为您提供更好的解决方案。
我可以在最后重现报告的场景,我想让你知道,在你的示例中,你只为所有图表提供了间隔类型作为天数,但绑定值不同,如月和年,以至于渲染需要花费太多时间。因为计算了自动间隔,并且为这么多年的所有日子呈现网格线。因此,您必须根据给定数据设置 Interval 和 IntervalType 否则您需要设置任何内容,图表将自动计算区间和区间类型根据数据。我们已经根据那个修改了你的样本,可以从下面的link.
下载。